在匹配图案和打印后grep for a word

时间:2013-03-12 18:46:39

标签: linux shell

假设我有一个文件名foo.txt,它包含以下信息。

Notification are enabled
Notification:445
Mode: valid
Bookmark are enabled
Bookmarks:556
Mode: Invalid
Question are enabled
Question:667
Mode: Unknown

我想grep / awk / sed以下信息。 我需要像

这样的结果
                   "Notification is Valid"
                   "Bookmark is Invalid"
                   "Question is Unknown"

如果您还有其他需要,请告诉我。谢谢。

2 个答案:

答案 0 :(得分:1)

如果我理解你想要什么,这样的事情可能有用:

awk '/enabled/{g=$1}/Mode:/{printf "%s is %s\n",g,$NF}' foo.txt

至少应该给出你给出的例子。如果您必须处理disabledenabled以外的任何其他内容,那会让它更复杂......

答案 1 :(得分:0)

假设foo.txt并且我们想要提取包含6个“组”的每3行的第1个和最后一个单词,这些单词用空格分隔\ n char表达式,使用xargs:

xargs -n6 < foo.txt

“线性化”内容,并给出:

Notification are enabled Notification:445 Mode: valid
Bookmark are enabled Bookmarks:556 Mode: Invalid
Question are enabled Question:667 Mode: Unknown

将此内容传递给awk:

xargs -n6 < foo.txt | awk '{print $1" is "$6}'

它提供了一些东西,我猜,它接近你想要的东西:

Notification is valid
Bookmark is Invalid
Question is Unknown

HTH