我有以下文件(teste.tsv):
dlah_C1 ACTGTCTGTCACTGTGTTGTGATGTTGTGTGTG
blah_C2 ACTTTATATATT
blah_C3 ACTTATATATATATA
blah_C4 ACTTATATATATATA
blah_C5 ACTTTATATATT
dlah_C6 ACTTATATATATATA
dlah_C7 ACTTATATATATATA
dlah_C8 ACTTTATATATT
Run Code Online (Sandbox Code Playgroud)
我必须只打印 teste.tsv 文件中带有“blah”字样的行
我已经制作了该命令行:
cat teste.tsv | awk -F " " '{if($1 == "blah"){print $0}}'
Run Code Online (Sandbox Code Playgroud)
但我知道这是错误的,因为我想抓住任何开始胡说八道的词。我试过 $1 == "blah*" 或 $1 == "blah.*" 但没有任何反应。
有人可以帮助我吗?非常感谢。
==是字符串比较运算符,~是正则表达式比较运算符。您的代码正在使用字符串比较 ( ==),但尝试使用正则表达式元字符(*以及.*其中的)。
其中任何一个都将打印以blah. 这些正在做正则表达式比较:
awk '/^blah/' file
awk '$0 ~ /^blah/' file
awk 'match($0,/^blah/)' file
awk 'match($0,/blah/) == 1' file
Run Code Online (Sandbox Code Playgroud)
虽然这些正在进行字符串比较:
awk 'index($0,"blah") == 1' file
awk 'substr($0,1,4) == "blah"' file
Run Code Online (Sandbox Code Playgroud)