awk双斜杠记录分隔符

时间:2016-03-23 02:56:59

标签: bash awk genbank

我正在尝试根据字符串“//”。

分隔文件的RECORDS

我尝试的是:

 awk -v RS="//" '{ print "******************************************\n\n"$0 }' myFile.gb

“******”等只是一条向我显示记录被拆分的痕迹。

但是,该文件还包含/(单独),我的跟踪******正在那里打印,这意味着awk正在将这些也解释为我的记录分隔符。

如何让awk只分割// ????

上的记录

更新:我在Unix上运行(OS X附带的那个)

我找到了一个临时解决方案:

sed s/"\/\/"/"*"/g | awk -v RS="*" ...

但必须有更好的方法,特别是对于我正在使用的大量文件。

1 个答案:

答案 0 :(得分:1)

在Mac上,awk version 20070501不支持多字符RS。这是一个使用这样的awk的例证,以及与gawk的比较(在同一台机器上):

$ /usr/bin/awk --version
awk version 20070501

$ /usr/bin/awk -v RS="//" '{print NR ":" $0}' <<< x//y//z
1:x
2:
3:y
4:
5:z

$ gawk -v RS="//" '{print NR ":" $0}' <<< x//y//z
1:x
2:y
3:z

如果找不到合适的awk,请选择比*更好的字符。例如,如果标签是可接受的,并且您的shell支持$'...',那么您可以使用sed的这个*:

sed $'s,//,\t,g'