0

我正在尝试根据字符串“//”来分隔文件的记录。

我试过的是:

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

其中“******”等只是向我显示记录已拆分的痕迹。

但是,该文件还包含/(由它们自己)并且我的踪迹 ******正在那里打印,这也意味着 awk 也将它们解释为我的记录分隔符。

我怎样才能让 awk 只在//????上拆分记录

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

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

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

但是必须有更好的方法,尤其是对于我正在处理的大量文件。

4

1 回答 1

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'
于 2016-03-23T06:24:38.583 回答