sed awk
-
s
- 是替换(substitute)命令-
#keyword#
- 匹配 keyword
字符串,使用`#`作为分隔符-
#replacement1#
- 将匹配到的字符串替换为 replacement1
-
g
- 全局(global)标志,表示替换所有匹配,不止替换第一处使用
`#作为分隔符的好处是,可以避免正斜杠
/`与keyword混淆。例如,如果keyword是`/root/path`,使用普通的`/`分隔符就会出错:
s/\/root\/path/replacement/g因为`/`被当成分隔符而不是keyword的一部分。使用`#`分隔符就可以避免这个问题:
s#/root/path#replacement#g现在`/root/path`整体作为keyword匹配。这个命令的效果是,将文本中所有出现的`keyword`字符串替换为`replacement1`。总结sed替换命令语法:
s/regexp/replacement/flags可以使用任意非空白字符作为分隔符。
sed '/keyword/!d; s/keyword/replacement1/g; s/another_keyword/replacement2/g' example.txt sed '/keyword/!d; s#keyword#replacement1#g; s#another_keyword#replacement2#g' example.txt
这个命令将执行以下操作:
/keyword/!d
是逻辑操作符,!
表示否定。!d
表示如果行不匹配关键字,则删除该行。s/keyword/replacement1/g
是替换命令,将行中的所有"keyword"替换为"replacement1"。s/another_keyword/replacement2/g
是另一个替换命令,将行中的所有"another_keyword"替换为"replacement2"。
这个命令将只输出包含关键字并经过两次替换后的结果行,并删除其他行。
请将 example.txt
替换为你实际使用的文件名,并根据需要修改替换命令及关键字。
- s
- 表示替换(substitute)命令
- /keyword/
- 匹配keyword字符串
- /replacement1/
- replacement1是替换的新字符串
- g
- 全局标志,表示替换所有匹配,不仅仅第一处匹配
这个命令中的操作依次执行:
/keyword/!d
是逻辑操作符,!
表示匹配不成功,d
表示删除。所以这个命令会删除不包含关键字的行。s#keyword#replacement1#g
是替换命令,将行中的所有出现的"keyword"替换为"replacement1"。s#another_keyword#replacement2#g
是另一个替换命令,将行中的所有出现的"another_keyword"替换为"replacement2"。
这个命令将只输出包含关键字并经过两次替换后的结果行
标签:replacement1,replacement2,shell,keyword,命令,subsitute,another,替换 From: https://www.cnblogs.com/sinferwu/p/17564813.html