假设我有一个文件名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"
如果您还有其他需要,请告诉我。谢谢。
答案 0 :(得分:1)
如果我理解你想要什么,这样的事情可能有用:
awk '/enabled/{g=$1}/Mode:/{printf "%s is %s\n",g,$NF}' foo.txt
至少应该给出你给出的例子。如果您必须处理disabled
或enabled
以外的任何其他内容,那会让它更复杂......
答案 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