簡體   English   中英

AWK雙斜杠記錄分隔符

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM