美文网首页
Day32-awk分隔符中的“异类”们

Day32-awk分隔符中的“异类”们

作者: 腐草为嘤 | 来源:发表于2019-08-21 22:05 被阅读0次

    我发现只要一开始做课题,永远不会少的东西就是问题。
    昨天刚刚总结了关于awk如何统计某列最大最小值的问题,今天又遇到一个很有意思的awk特例,问题来源于同组同学。
    她询问我,有以下的蛋白质FASTA文件,她想要提取出标题行的第8列信息重新命名标题行应该怎么做?
    需求如下:

#Raw Data
>Sample||0001||1284267||1285379||mRNA||1||CDS||936861456||1||frame0
Protein Sequence
...

#Results
>936861456
Protein Sequence
...

    我一看,这个还挺简单的,直接awk走起不就完事了吗?

awk -F"||" '{if($0~/^>/)print ">"$8;else print $0}' fastafile > test.txt

    结果出来我傻了,标题行的编号去哪儿了?怎么只剩下一个孤零零的大于号,仿佛在嘲笑我的悲伤无限大……
    最好的老师永远是度娘,搜索之后我得知,||这样的字符在awk中属于特殊的分隔符,不能够直接匹配,需要先用单括号括起来,再加上双反斜线\\进行转义才能够匹配,于是命令就变成了:

awk -F'\\|\\|' '{if($0~/^>/)print ">"$8;else print $0}' fastafile > test.txt

    这样总算能够正常输出结果啦,其实在awk中这样的特殊分隔符还有很多,例如\<>()\n\t&;'"、管道符、空格或反引号等在shell中有特殊意义的字符作为分隔符,那么都要使用双引号或者单引号把它们先包裹起来;还有就是像我今天遇到的这样多个特殊字符作为分隔符,例如$^*()[]?.|,都要会用双反斜线\\进行转义,当然用两个以上的反斜线也是可以的,不过外面一定记得使用单括号。
    今天又是为awk深深折服的一天,给跪啦!

相关文章

  • Day32-awk分隔符中的“异类”们

        我发现只要一开始做课题,永远不会少的东西就是问题。    昨天刚刚总结了关于awk如何统计某列最大最小值的...

  • 清理浮动 解决浮动父容器高度塌陷问题

    方案1 方案2 分隔符分隔符分隔符分隔符分隔符分隔符分隔符分隔符分隔符分隔符分隔符分隔符分隔符分隔符 都向左浮动,...

  • awk命令设置多个FS

    awk中FS代表输入字段分隔符,可以通过|设置多个不同的字段分隔符

  • Hive很重要的知识点

    hive建表语法中的分隔符设定 ROW FORMAT DELIMITED分隔符设置开始语句 FIELDS TERM...

  • php进阶(二)之正则表达式

    分隔符 PCRE库函数中,正则匹配模式使用分隔符与元字符组成,分隔符可以是非数字、非反斜线、非空格的任意字符。经常...

  • 2020-01-17

    centOS 中awk命令中分隔符含有'[ ]' 使用awk处理文本时,若指定的分隔符包含中括号(比如要使用'[a...

  • 文件路径匹配模式 globs匹配规则,正则也可以

    A. “*”:匹配文件中0个或者多个字符,但是不会匹配路径中的分隔符,除非路径分隔符出现在末尾。例 a) ....

  • 狼群中的异类

    在辽阔而翠绿的大草原上,生活着一群草原狼。这群狼不但手段凶残,而且纪律严明,战斗力非常强大,令草原上所有的动物都闻...

  • 生活中的异类

    生活中被别人当成异类不可怕,关键是自己有没有信心、有没有力量。如果自己是一个很强的人,那么“异类”就变成了“卓然不...

  • 群像中的异类

    因为这样只能证明你是个低头党 只 愿 意 凝 视 你 一 个 你也许都不曾察觉,当乔布...

网友评论

      本文标题:Day32-awk分隔符中的“异类”们

      本文链接:https://www.haomeiwen.com/subject/laewsctx.html