[英]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.