我想计算第7列有3'类UTR正则表达式的行,但我不知道如何使用符号'来完成这项操作。谁能提出任何想法?非常感谢你!
awk -F "\t" '$7 ~ /3'UTR/ {print}' a.txt | wc -l
谢谢,
夏雨
答案 0 :(得分:1)
您不能在单引号分隔的脚本中包含单引号。没有理想的解决方案,它们都有警告和缺点,但恕我直言最好的方法是使用ascii转义序列作为引用(即\047
),因为它不需要任何棘手的引用和/或转义和/或可能导致字符串连接问题的变量,它可以在任何平台上的任何现代awk中使用:
$7 ~ /3\047UTR/
唯一的缺点是必须记住那是\047
的意思: - )。
顺便说一句,您不需要管道wc
,您的脚本可以是:
awk -F '\t' '$7~/3\047UTR/{c++} END{print c+0}' a.txt
答案 1 :(得分:0)
这是另一种方法:
awk '$7~test {a++} END {print a+0}' test="3'UTR" file
您不需要将字段分隔符设置为选项卡,因为选项卡和空格是默认值
由于awk
在代码中不能很好地处理单引号,因此您可以在代码之外定义它。这样您就不需要记住转义代码以在代码中使用它。 +0
用于打印0
(如果没有找到),否则它将不打印任何内容。
您也可以在开头添加变量。
awk -v test="3'UTR" '$7~test {a++} END {print a+0}' file