簡體   English   中英

分割每隔第二個分隔符

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

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