awk - Linux中的AWK问题
问题描述
我有以下文件(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
我只需要打印 teste.tsv 文件中带有单词“blah”的行
我做了那个命令行:
cat teste.tsv | awk -F " " '{if($1 == "blah"){print $0}}'
但我知道这是错误的,因为我想抓住任何开始喋喋不休的词。我试过 $1 == "blah*" 或 $1 == "blah.*" 但没有任何反应。
有人可以帮助我吗?非常感谢。
解决方案
==
是字符串比较运算符,~
是正则表达式比较运算符。您的代码正在使用字符串比较 ( ==
) 但尝试使用正则表达式元字符 (*
以及.*
其中)。
其中任何一个都将打印以 . 开头的每一行blah
。这些正在做一个正则表达式比较:
awk '/^blah/' file
awk '$0 ~ /^blah/' file
awk 'match($0,/^blah/)' file
awk 'match($0,/blah/) == 1' file
虽然这些正在进行字符串比较:
awk 'index($0,"blah") == 1' file
awk 'substr($0,1,4) == "blah"' file
推荐阅读
- angular - 全局 .replace Angular6
- r - 带条件面板的闪亮模块中的命名空间错误
- android - 使用 linphone 获取 Asterisk HangupCauseCode?
- python - 为什么 Python pandas read_csv 与其他函数结合使用时不起作用
- dynamic - 动态构建 lambda 表达式
- scala - Scala Array 是 Sequence 的子类型
- javascript - 如何检查一个对象数组是否完全属于另一个?
- wordpress - WordPress在自定义帖子网址中添加连字符
- c++ - 重新抛出异常保留回溯
- sas - 我可以标准化/转换日期时间中的数据以具有相同的“分钟”吗?