[英]Awk double-slash record separator
我試圖基於字符串“ //”分隔文件的記錄。
我試過的是:
awk -v RS="//" '{ print "******************************************\n\n"$0 }' myFile.gb
其中“ ******”等僅是向我顯示記錄已拆分的痕跡。
但是,該文件還包含/
(本身),並且我的跟蹤記錄******
也在那里打印,這意味着awk還將這些解釋為我的記錄分隔符。
我怎么能awk只拆分//
記錄?
更新:我在Unix(OS X附帶的)上運行
我找到了一個臨時解決方案,它是:
sed s/"\/\/"/"*"/g | awk -v RS="*" ...
但是必須有更好的方法,尤其是對於正在使用的海量文件。
在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
,請選擇比*
更好的字符。 例如,如果制表符是可接受的,並且如果您的外殼支持$'...'
,那么您可以使用sed
這種形式:
sed $'s,//,\t,g'
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.