sed命令详解及应用
sed是一种流编辑器,一次处理一行内容,把当前处理的内容存放在一个叫做“模式空间”的缓冲区中。能够进行数据的替换、删除、新增等。
语法结构:sed [option] script [file]
常用选项:
-n:禁止输出模式空间中的内容
-r:支持扩展正则表达式
-e:指定多脚本运行(-e script1 -e script2…)
-f /path/to/scripts:从指定的脚本文件中读取脚本并运行
-i:直接修改文件(即改即生效)
地址定界:
#:#表示数字,代表特定行
#1,#2:表示从#1行到#2行
/pattern1/,/pattern2/:表示从第一个匹配模式到第二个匹配模式中间的所有行
$:表示最后一行
/string/:表示被string匹配的所有的行
#,/pattern/:表示从第#行开始到被pattern匹配的行 中间所有的行
1~2:表示所有的奇数行
2~2:表示所有的偶数行
sed的编辑命令:
d:删除模式空间中的行
=:为模式空间中的行加上行号
a \text1 \text2 …:在匹配文本所在行的后面追加内容
i \text1 \text2…:在匹配文本所在行前面加内容
c \text:用text文本替代模式匹配到内容所在的整行内容
p:打印模式匹配的行
s/sting1/string2/:用string来替换string1
g:全局替换
i:不区分大小写
w /path/to/somefile:将匹配到的内容写入文件
r /path/to/somefile:在文件的指定内容插入另一个文件的所有内容
应用示例:
- 删除/tmp/grub2.cfg文件中所有的行的行首的空白字符
sed ‘s/^[[:space:]]\+//g’ /tmp/grub2.cfg
- 删除/tmp/grub2.cfg中所有以#开头,且后跟至少跟了一个空白字符的行的行首的#和空白字符
sed ‘s/^#[[:space:]]\+//g’ /tmp/grub2.cfg
- 将/tmp/grub2.cfg文件中的奇数行另存为/tmp/grub3.cf
sed ‘1~2w /tmp/grub3.cfg’ /tmp/grub2.cfg
- echo一个文件路径给sed命令,取出其基名和取出其路径名
echo “/etc/sysconfig/network-scripts/ifcfg-em1” | sed ‘s@^.*/\([^/]\+\)/\?$@\1@’
echo “/etc/sysconfig/network-scripts/ifcfg-em1” | sed ‘s@[^/]\+/\?$@@’
本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/92403