shell subsitute替换分割符

 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"。

这个命令将只输出包含关键字并经过两次替换后的结果行

 

posted @ 2023-07-19 10:05  sinferwu  阅读(54)  评论(0编辑  收藏  举报