美文网首页
【技术-0007-Linux shell-sed基础1】

【技术-0007-Linux shell-sed基础1】

作者: 西布鲁克 | 来源:发表于2021-05-03 22:54 被阅读0次

shell中的sed是stream editor的简写,顾名思义,所谓流编辑器就是一种不同于vim等交互式文本编辑器,它可以根据指定的命令及参数选项来处理数据流中的数据,数据流可以是标准输入输出,也可以是文件等。sed命令一般有以下几个常用选项

  • -e : 使用sed执行多个子命令时,需要使用-e选项并且将子命令用分号隔开
  • -f : 如果需要执行的子命令是定义在命令文件中,需要使用-f选项指定命令文件
  • -n : 不产生命令输出,使用print命令来完成输出(-n选项将禁止sed编辑器输出。但p替换标记会输出修改过的行。将二者配合使用的效果就是 只输出被替换命令修改过的行。)
    *-i : 直接在待修改的文件上进行修改保存替换原文件

可以在sed命令后用单引号具体标示需要在流编辑器中执行的编辑操作,包括替换、删除、插入、修改等具体命令

sed 's/dog/cat/' data1.txt

上面的命令,就是要在文本文件data1.txt的每一行找到第一个匹配的dog,找到后用cat来替换。这里有一个问题就是:如果某一行里即使有多个"dog",sed也只会替换第一个"dog"为"cat",而忽略第二个"dog"。如果想要争个文本文件都完成替换,需要添加一个替换标记'g'

sed 's/dog/cat/g' data1.txt 

替换标记'w'用于将替换修改的结果写入到指定的文件中

sed 's/dog/cat/w data2.txt ' data1.txt 

某些特殊字符(比如斜杠'/')在替换命令里,需要用反斜杠('')进行转义,否则脚本会报错;或者sed支持自定义其他特殊字符作为分隔符(这样,'/'就可以不需要经过''转义了)

相关文章

网友评论

      本文标题:【技术-0007-Linux shell-sed基础1】

      本文链接:https://www.haomeiwen.com/subject/txpqdltx.html