簡體   English   中英

如果行包含字符串,則Grep模式輸出子字符串

[英]Grep pattern to output substring if line contains string

如果word3為'nn1',我希望Grep(或awk或sed)在新行上輸出word2。 我的制表符分隔的源文本文件中的每一行是

<number> <word1> <word2> <word3> <lots of junk>

還是我需要分兩次通過-隔離行,然后拉出word2?

任何幫助表示感謝!

您可以使用awk:

awk '$4 == "nn1"{print $3}' file

注意:對於制表符分隔的文件以及以上的awk命令都將起作用,因為空格或制表符是默認定界符。

但是, 如果要僅在制表符上而不是空格中拆分字段,請使用:

awk -F'\t' '$4 == "nn1"{print $3}' file

Awk是完成這項工作的工具:

awk '$4 == "nn1" { print $3 }' file

如果第四列是nn1 ,則打印第三列。

默認情況下,awk將行分割為任意數量的空格字符(制表符或空格)。 正如您所說的“ word1”,“ word2”等。我想每個字段中都沒有空格,因此默認行為應該可以。 但是,如果要明確,可以自己指定字段分隔符:

awk -F'\t' '$4 == "nn1" { print $3 }' file

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM