[英]Split every second occurrence of delimiter
我試圖使用awk每隔第二次出現一個分隔符來分割一個文件,但是我總是以開頭的空文件結尾,我不明白為什么。
我需要在多個文件中分解的數據具有類似於以下格式:
----------
aaa
bbb
----------
ccc
ddd
----------
eee
fff
----------
ggg
第一個生成的文件應包含:
----------
aaa
bbb
----------
ccc
ddd
分隔符始終相同(“負號”的10倍)。
我現在正在嘗試這樣做:
awk -v RS='[-]{10}' '{i++} {file = sprintf("temp-%s", int(i/2)); print >> file;}'
但是,我得到的第一個文件(temp-0)始終包含一個空行,沒有其他內容。
另外,源文件也不以空行開頭,也沒有內容(它們已在以前被刪除)。
有人可以幫忙嗎?
對於這個問題,我不會使用RS
。 您可以數---------
來決定是否必須增加文件索引。 試試這一行:
awk '/^--*$/{c++;f+=c%2?1:0}{print > "temp-"f}' file
請注意,上面的行為您提供了如何處理行和文件索引的想法。 如果文件很大,則需要close()
文件,然后使用>>
再次重定向,否則會出現錯誤,例如too many opened files
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.