Linux:大きなテキストデータの一部だけ編集したい
Last-modified: 2013-08-24 (土) 02:14:21 (3891d)
Top / Linux:大きなテキストデータの一部だけ編集したい
Linux:大きなテキストデータの一部だけ編集したい †
大きなテキストをviで開いて編集するのは大変です。そんなときは、こんな感じで作業します。
まず、あるそこそこのサイズのテキストファイル「test.txt」があるとします。
# ls test.txt # wc -l test.txt 93960 test.txt #
これの行数は、約9万4千行です。
これを、以下のようにして分割します。
# cat test.txt |split -a5 # ls test.txt xaaaaf xaaaal xaaaar xaaaax xaaabd xaaabj xaaabp xaaabv xaaacb xaaach xaaacn xaaact xaaacz xaaadf xaaadl xaaaaa xaaaag xaaaam xaaaas xaaaay xaaabe xaaabk xaaabq xaaabw xaaacc xaaaci xaaaco xaaacu xaaada xaaadg xaaadm xaaaab xaaaah xaaaan xaaaat xaaaaz xaaabf xaaabl xaaabr xaaabx xaaacd xaaacj xaaacp xaaacv xaaadb xaaadh xaaadn xaaaac xaaaai xaaaao xaaaau xaaaba xaaabg xaaabm xaaabs xaaaby xaaace xaaack xaaacq xaaacw xaaadc xaaadi xaaado xaaaad xaaaaj xaaaap xaaaav xaaabb xaaabh xaaabn xaaabt xaaabz xaaacf xaaacl xaaacr xaaacx xaaadd xaaadj xaaadp xaaaae xaaaak xaaaaq xaaaaw xaaabc xaaabi xaaabo xaaabu xaaaca xaaacg xaaacm xaaacs xaaacy xaaade xaaadk #
すると、ファイル名がxaから始まる、1ファイルに1000行入ったファイルに分割されます。
# wc -l xaaaaa 1000 xaaaaa #
ここで、分割されたファイルの中から編集部分を探すことで、小さいファイルに編集を加えることができます。
くっつける場合は、以下のようにします。
# cat xa* > test2.txt #
すると、元通りにくっついてくれます。
# wc -l test2.txt 93960 test2.txt # diff test.txt test2.txt #
※今回はファイルを編集していないので、差分はありません。
なるほど~便利!