Sed命令常用用法

基本语法:
sed [options] commands inputfile

options:
-n:取消默认输出
eg. sed -n '3 p' test.txt
-e:多条子命令时使用
eg. sed -e 's/a/A/' -e 's/b/B/' test.txt
eg. sed -e 's/a/A/;s/b/B/' test.txt
-f:将多条命令写在脚本中,从脚本中读取命令,此时commands参数是脚本名称
cat a.sed
s/a/A/
s/b/B/
eg. sed -f a.sed test.txt
-i:直接在原文件上做修改
-r:允许使用扩展正则表达式

commands:[定位参数] [编辑命令]

  • 定位参数
    • 行号定位:
      • 单行号定位:x(表示具体一行)、$(特指最后一行)
        eg. sed -n ‘3 p’ test.txt
      • 连续行号定位:x,y(表示从第x行到第y行)、x,+n(表示从第x行开始以及之后的n行)
        eg. sed -n '3,4 p' test.txt
        eg. sed -n '3,+1 p' test.txt
      • 等差行号定位:x~step(表示从第n行开始,步长是step的那些行)
        eg. sed -n '3~2 p' test.txt
    • 正则表达式定位:/regexp/
      eg. sed -n '/abc.*abc/ p' test.txt
  • 编辑命令
    • 打印:p
      eg. sed -n '3 p' test.txt
    • 替换: s/pattern/replacement/[flag]
      flag:g(所有匹配到的都做替换)、n(n是一个具体的十进制数字,表示第n个匹配到的才做替换)
      eg. sed -i 's/abc.*abc/abc/g' test.txt
    • 删除: d
      eg. sed -i '2 d' test.txt
    • 追加(在指定的行后增加一行): a string
      eg. sed -i '2 a abcde' test.txt
    • 插入(在指定的行前增加一行): i string
      eg sed -i '2 i abcde' test.txt

你可能感兴趣的:(Shell,Linux)