Bash

如何將分隔符之間的文本拆分為多個文件?

  • March 26, 2022

我有一個包含以下內容的文本文件:

"random
textA"
"random
random
textB"

分隔符是"

如何使用 bash 命令將包含拆分為多個文件,如下所示?

文件 1:

random
textA

文件 2:

random
random
textB

我進入了使用csplitor的範例,awk但它們並未涵蓋此文本佈局。

簡單awk命令:

awk 'NR%2==0{ print >("File " ++i) }' RS='"' infile

RS定義"為記錄分隔符並且NR是記錄號。如果記錄號是 2 的模數(因為我們有另一個第一個"記錄),則將目前記錄列印$0File #.

如果開頭的引號總是在行的開頭, csplit 會像這樣正常工作:

bash$ csplit /tmp/data '/^"/'

這會產生名為 xx00 等的文件。請注意,您的範例刪除了引號,而這沒有。你需要一個命令行 sed 來做到這一點:

bash$ for file in xx* ; do { sed 's/^"//;s/"$//;' ${file} >x${file}; } ; done

引用自:https://unix.stackexchange.com/questions/172146