我有一个文件,我想在同一行搜索两个pttern,如果发现应该在该行的末尾插入一个单词。想在sed做。
实施例
我有类似下面的文件内容,想要搜索unix和NotOK
abc unix windows DBa NotOK
abc unix windows DBa OK
abc oracle sybase java OK
输出应该是(匹配abc和NotOK,如果找到,在行尾插入unix)
abc unix windows DBa NotOK "unix"
abc unix windows DBa OK
abc oracle sybase java OK
答案 0 :(得分:2)
[[bash_prompt$]]$ cat log
abc unix windows DBa NotOK
abc unix windows DBa OK
abc oracle sybase java OK
[[bash_prompt$]]$ sed -e 's/^.*unix.*NotOK.*$/& "unix"/g' log
abc unix windows DBa NotOK "unix"
abc unix windows DBa OK
abc oracle sybase java OK
答案 1 :(得分:1)
我知道它要求sed
,但只是为了说明如何在awk
awk '/abc.*NotOK/ {$0=$0 "\"unix\""}1' log
abc unix windows DBa NotOK "unix"
abc unix windows DBa OK
abc oracle sybase java OK
如果abc和NotOK的顺序可能不同,你可以
awk '/abc/ && /NotOK/ {$0=$0 "\"unix\""}1' log
答案 2 :(得分:1)
sed "/Pattern1/ {/Pattern2/ s/$/ YourLastWork/;}" ${YourFile}
在这种情况下,未指定模式的顺序(两者都必须存在)