次の例の内容を含むテキストファイルがあります。このファイルを複数のファイルに分割したいと思います。
[TXT] /path/to/[TXT]
[BAT] /path/to/[BAT]
[TXT] /path/to/blah/[TXT]
[BAT] /path/to/blah/[BAT]
csplit
だから私は私が達成したいものを少なくとも部分的に達成するために使用できることを発見しました。
csplit -f 'paths-' -b '%04d.txt' 'path/to/filelist.txt' '/^\[(.*)]\t/' '{*}'
しかし、これはpaths-0000.txt
。
paths-txt.txt
のようなものがもっと増えてほしいですpaths-bat.txt
。
とにかく正規表現をプレフィックス一致と一致させることはできますか?
-f 'paths-$1.txt'
私はのようなものを試しました-f 'paths-\1.txt'
。
しかし、これらのどれも私が望むように行われませんでした。
答え1
csplitの使用は、仕事に適したツールではありません。
私が欲しいものを達成するためにawkを使用します。
awk -F"\t" '{print > $1".txt"}' /path/to/filelist.txt
制限したい場合は、分割後にファイルの特定の部分のみを保持できますが、すべてが必要または必要です。
awk -F"\t" '{print $2 > $1".txt"}' /path/to/filelist.txt