2015-05-11 30 views
2

我想知道是否有可能從一個文件塊讀取,直到一個特定的分隔符(即某個字符串或某事),而不是linewise(如'讀'會這樣做)。Shellscript - 讀取blockwise

input.txt中包含:

text1 
text2 
NEXT 
text3 
NEXT 
text4 
text5 

每一文本段應保存在某個單個文件(文本+文本2 // //文字3 +文本4 text5)

我張望了一下打編輯IFS但不幸的是沒有成功。

回答

2

您可以使用gnu-awk自定義記錄分隔符:

awk -v RS='\nNEXT\n' '{sub(/\n$/, ""); print "<" $0 ">"}' file 
<text1 
text2> 
<text3> 
<text4 
text5> 

每塊<...>是一條記錄。

+0

嘿,感謝您的第一次幫助!是否有更簡單的方法來實現這一點?以及每個單個記錄如何保存到單個文件? – user3322838

+1

例如你可以使用:'awk -v RS ='\ nNEXT \ n''{sub(/ \ n $ /,「」);打印$ 0>「文件」NR}'文件' – anubhava

+1

file1 file2 file3會好的,我要試試這個 – user3322838