SED - 如果找到模式匹配,则在一行中搜索两个模式并在行尾插入几个单词

时间:2013-10-31 06:45:24

标签: sed

我有一个文件,我想在同一行搜索两个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

3 个答案:

答案 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}

在这种情况下,未指定模式的顺序(两者都必须存在)