sed 命令的使用
默认不编辑原文件,仅对空间中的数据做处理,而后,处理结束后,将模式空间打印至屏幕。
sed ‘AddressCommand’ file ……
- -n: 静默模式,不再默认显示模式空间中的内容*
- 例如:sed -n ‘/^\//p’ /etc/passwd,只显示以^开始的行
- -i : 直接修改原文件。
- -e SCRIPT -e SCPIPT: 可以同时执行多行脚本。
- -f /PATH/TO/SEN_SCRIPT , 执行脚本文件。
- -r 表示使用扩展表达式。
- 例如:history | sed ‘s#[[:space]]*##g’ ,去掉空白字符。
Address:
- 1.StartLine,EndLine
- 比如:1,100
- $:最后一行
- $-1:倒数第二行
- 2./RegExp/
- 例如:sed ‘/root/d’ /etc/passwd ,删除匹配root的行。
- 3./pattern1/,/pattern2/
- 第一次被pattern1 匹配到的行开始,至第一次被pattern2 匹配的的行结束这中间所有的行。
- 4.LineNumber
- 指定的行。例如:sed ‘1d’ /etc/passwd, 删除第一行。
- 5.startLine, +N
- 从sstartLine 开始,向后的N行。
- 例如:sed ‘1,+2d’ /etc/passwd,删除1-3行。
Command:
- d:删除符合条件的行:,例:sed ‘1,2d’ /etc/passwd ,删除1-2行,把其它内容显示出来;
- p:显示符合条件的行;
- 例如:sed ‘/^\//d’ /etc/passwd 删除以斜线开始的行,
- i \string : 在指定的行前面添加新行,内容为String,用法同 a;
- a \string :在指定的行后面追加新行,内容为string;
- 例如:sed ‘/^root/a#hello world’ /etc/passwd, 在以root 开始的行下添加一行为#hello world 内容;
- r File : 将指定的文件的内容添加到符合条件的行处,
- 有合并文件的作用。
- 例如:sed ‘2r /etc/passwd’ /etc/gourp,将/etc/passwd 的内容,插入到/etc/group 中第二行后面;
- 例如:sed ‘1,2r /etc/passwd’ /etc/gourp,将/etc/passwd 的内容,插入到/etc/group 中第一,第二行后面;
- w FILE : 将地址指定的范围内的内容另存至指定的文件中。
-例如:sed -n ‘/oot/w /home/lenovo/lession.txt’ /etc/passwd, 将匹配oot 的行保存到 /home/lenovo/lession.txt。 s /pattern/string/: 把匹配到pattern 的行替换成string. 默认只替换每一行第一次被模式匹配到的字符串。这里的三个/,也可用s#pattern#string#或s@pattern@string@替换,来如果想全部都替换,可以加修饰符:
- g:全局替换
- I:忽略字符大小写
- 例如:sed ‘s/^\//#/’ /etc/passwd, 把以/开始的行的开始/替换成#。
- 例如:sed ‘s/^\//#/g’ /etc/passwd, 把以/开始的行中的/都替换成#。
& : 引用模式匹配整个串;
- 例如:sed ‘s#l..e#&r#g’ /etc/passwd , 注意&字符,这里表示前面正则表达式所匹配到的字符串.
- 例如:sed ‘s#(l..e)#\1#g’ /etcc/passwd
- 例如:sed ‘s#l(..e)#L\1#g’ /etc/passwd , 把行中例如 look,lick,等字符串替换成 Look,Lick.