1

次のファイルがあるとします:(Song.txt)

Song one
bla bla bla bla 
bla bla bla bla bla
Song two
yaya ya yaa 
blaaa bla bla blaaaaa
Song three
bla bla bla

このファイルを次のように3つのファイルに分割したいと思います。

最初のファイル名はSong_1.txtである必要があります

Song One
bla bla bla bla 
bla bla bla bla bla

2番目のファイル名はSong_2.txtである必要があります

Song two
yaya ya yaa 
blaaa bla bla blaaaaa

3番目のファイル名はSong_3.txtである必要があります

Song three
bla bla bla

awk、grep、perl、python、および/または利用可能なUNIXベースのツールや言語を使用してこれを行うにはどうすればよいですか?

4

3 に答える 3

4
csplit Song.txt --elide-empty-files --prefix=Song_ --suffix-format='%1d.txt' '/Song one/' '/Song two/' '/Song three/'

また

csplit Song.txt -z -f Song_ -b '%1d.txt' '/Song one/' '/Song two/' '/Song three/'
于 2012-05-28T20:48:54.210 に答える
3

csplit正規表現を使用してテキストファイルを分割するために使用できます。

于 2012-05-28T20:21:17.520 に答える
2

これは役立つはずです-

gawk -v RS="Song" 'NF{ print RS$0 > "Song_"++n".txt" }' Song.txt

テスト:

[jaypal:~/Temp] cat Song.txt 
Song one
bla bla bla bla 
bla bla bla bla bla
Song two
yaya ya yaa 
blaaa bla bla blaaaaa
Song three
bla bla bla

[jaypal:~/Temp] gawk -v RS="Song" 'NF{ print RS$0 > "Song_"++n".txt" }' Song.txt

[jaypal:~/Temp] ls -l S*
-rw-r--r--  1 jaypalsingh  staff  113 28 May 17:55 Song.txt
-rw-r--r--  1 jaypalsingh  staff   47 28 May 18:06 Song_1.txt
-rw-r--r--  1 jaypalsingh  staff   45 28 May 18:06 Song_2.txt
-rw-r--r--  1 jaypalsingh  staff   24 28 May 18:06 Song_3.txt

[jaypal:~/Temp] cat Song_1.txt 
Song one
bla bla bla bla 
bla bla bla bla bla

[jaypal:~/Temp] cat Song_2.txt 
Song two
yaya ya yaa 
blaaa bla bla blaaaaa

[jaypal:~/Temp] 
于 2012-05-28T22:07:07.687 に答える