0

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

3 回答 3

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
于 2013-10-31T06:52:04.470 回答
2
sed "/Pattern1/ {/Pattern2/ s/$/ YourLastWork/;}" ${YourFile}

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

于 2013-10-31T08:56:00.307 回答
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
于 2013-10-31T07:13:51.433 回答