使用符号'来搜索正则表达式

时间:2014-08-15 21:51:17

标签: awk

我想计算第7列有3'类UTR正则表达式的行,但我不知道如何使用符号'来完成这项操作。谁能提出任何想法?非常感谢你!

awk -F "\t" '$7 ~ /3'UTR/ {print}' a.txt | wc -l

谢谢,

夏雨

2 个答案:

答案 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