标签:awk 功能 ima 结果 src 作用 end pat 直接
我以前的文章介绍过grep了,今天我就来说一下第二个sed,它是stream editor的缩写。在Linux的文本文件中文本存储都是一行,显示时表现的多行其实都是因为有换行符的存在,例如:文本是:abc$def$ghi 显示出来就是三行了。Sed就是一个行编辑器,它一次读一行文本进行操作,然后根据我们的选择看是否同步到文本之中。还有一个叫awk的,在Linux上叫做gawk(gnu awk),它是一个文本格式化工具,我们下一篇文章再说。 r /path/from/somefile:在文件的指定位置插入另一个文件的所有内容,完成文件合并;
#sed ‘8r /etc/issue’ /etc/fstab #将issue的第8行之后的内容读进来放到fstab之前
练习:
(1) 删除/boot/grub/grub.conf文件中所有行的行首的空白字符;
sed ‘s/^[[:space:]]\+//‘ /boot/grub/grub.conf
(2) 删除/etc/fstab文件中所有以#开头,后跟至少一个空白字符的行的行首的#和空白字符;
sed ‘s/^#[[:space:]]\+//‘ /etc/fstab
(3) 把/etc/fstab文件的奇数行另存为/tmp/fstab.3;
sed ‘1~2w /tmp/fstab.3‘ /etc/fstab
(4) echo一个文件路径给sed命令,取出其基名;进一步地,取出其路径名;
取基名:echo "/etc/sysconfig/network-scripts/" | sed ‘s@^.*/\([^/]\+\)/\?$@\1@‘
取路径名:echo "/etc/sysconfig/network-scripts/" | sed ‘s@[^/]\+/\?$@@‘
Sed不仅有一个模式空间,还有一个保持空间,它可以帮助sed暂时存储一些东西以便后续的使用。
高级命令:
h:用模式空间中的内容覆盖保持空间的内容;
H:把模式空间中的内容追加至保持空间中内容的后面;
g:从保持空间中取到其内容,并将其覆盖模式空间中的内容;
G:从保持空间中取到其内容,并将其追加在模式空间中的内容的后面;
x:把保持空间和模式空间中的进行交换;
n:读取匹配到的行的下一行至模式空间;(会覆盖模式空间中的原有内容);
N:读取匹配到的行的下一行至模式空间,追加在模式空间中原有内容的后面;
d:删除模式空间中的内容;
D:删除多行模式空间中的首行;
注意:命令功能可使用!取反;分号可用于分隔脚本;
示例:
sed ‘G‘ /etc/issue: 在文件中的每行后方添加空白行;
sed ‘$!d‘ /etc/fstab:保留最后一行;
sed ‘/^$/d;G‘ /etc/issue: 保证指定的文件每一行后方有且只有一个空白行;
sed ‘n;d‘ /etc/issue:保留奇数行;
sed -n ‘1!G;h;$p‘ /etc/issue :全文倒叙显示
sed ‘$!N;$!D‘ /etc/issue:显示最后两行
sed命令:
-e ‘script‘ -e ‘script‘
‘script;script;script‘ 与上一行模式相同
script
script
script
-f /path/from/script 都是第一行的作用
标签:awk 功能 ima 结果 src 作用 end pat 直接
原文地址:http://blog.51cto.com/13869667/2154332