TongXu-Server

Sed

sed 流编辑器

  • 非交互式的对内容进行增删查改的操作,只能在命令行输入编辑命令、指定文件名,然后在屏幕上查看输出。编辑对象为文件中的行
  • 文件的内容增加操作
sed 'a\append data "haha"' data1
#在data1的每行后面追加一行新数据内容append data "haha"

sed '2a\append data "haha"' data1
#在data1的第二行后面追加一行新数据内容append data "haha"

sed '2,4a\append data "haha"' data1
#在data1的第二到四行后面追加一行新数据内容append data "haha"

sed '/3 the/a\append data "haha"' data1
#启用字符串匹配,匹配“3 the”的行后面追加一行新数据内容append data “haha"

sed 'i\insert data' data1
#在每行的前面插入一行新数据insert data
sed '2i\insert data' data1
sed '2,4i\insert data "haha"' data1
sed  '/3 the/i\insert data "haha"' data1
  • 文件内容替换操作
echo "this is a  test" | sed 's/test/text/'
#将test修改为text
sed 's/dog/cat/' data1
#将每一行中的dog替换为cat
sed '2s/dog/cat/' data1
sed '2,4s/dog/cat/' data1
sed '/3 the/s/dog/cat/' data1
  • 文件内容更改操作
sed 'c\change data "haha"' data1
#将每一行更改为change data "haha"
sed '2c\change data "haha"' data1
sed '2,4\change data "haha"' data1
sed '/3 the/c\change data "hahah"' data1
  • 字符转换,将匹配的内容转换为新的数据
sed 'y/abc/ABC/' data1
#将每一行中的a b c字符对应转换为A B C字符
  • 文件内容删除
sed 'd' data1
#删除文件data1中的所有数据
sed '3d' data1
sed '2,4d' data1
sed '/3 the/d' data1
  • 将文件内容输出到屏幕
sed 'p' data1
#打印文件data1到屏幕上
sed '3p' data1
#打印文件的第三行内容
sed '2,4p' data1
sed '/3 the/p' data1
  • 在命令行中使用多个命令-e参数
sed - e 's/brown/green/;s/dog/cat/' data1
  • 从文件读取编辑器命令-f file
vim abc
s/brown/green/
s/dog/cat/
s/fox/elephant/

sed -f abc data1
#等效为 sed  -e 's/brown/green/;s/dog/cat/;s/fox/elephant/' data1
  • 一直内存输出
sed -n '2,$p' data1
#打印文件第二行到最后一行的内容
  • 使用正则表达式
sed -n -r '/^(3 the)/p' data1
  • 标志
sed 's/dog/cat/2' data2
#替换第二行dog为cat
sed 's/dog/cat/g' data2
#将data2从所有的dog替换为cat
sed '3s/dog/cat/p' data2
#将第三行的dog替换为cat并打印
sed '3s/dog/cat/w text' data2
#将第三行中的dog替换为cat并存入文件text中