sed 命令的使用

来源:互联网 发布:北京理工大学 网络教育 编辑:程序博客网 时间:2024/05/18 21:49

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.
0 0
原创粉丝点击