Bash
如何將分隔符之間的文本拆分為多個文件?
我有一個包含以下內容的文本文件:
"random textA" "random random textB"
分隔符是
"
如何使用 bash 命令將包含拆分為多個文件,如下所示?
文件 1:
random textA
文件 2:
random random textB
我進入了使用
csplit
or的範例,awk
但它們並未涵蓋此文本佈局。
簡單
awk
命令:awk 'NR%2==0{ print >("File " ++i) }' RS='"' infile
RS
定義"
為記錄分隔符並且NR
是記錄號。如果記錄號是 2 的模數(因為我們有另一個第一個"
記錄),則將目前記錄列印$0
到File #
.
如果開頭的引號總是在行的開頭, csplit 會像這樣正常工作:
bash$ csplit /tmp/data '/^"/'
這會產生名為 xx00 等的文件。請注意,您的範例刪除了引號,而這沒有。你需要一個命令行 sed 來做到這一點:
bash$ for file in xx* ; do { sed 's/^"//;s/"$//;' ${file} >x${file}; } ; done