Eu tenho um arquivo de texto que contém o conteúdo do exemplo abaixo e gostaria de dividir o arquivo em vários arquivos.
[TXT] /path/to/[TXT]
[BAT] /path/to/[BAT]
[TXT] /path/to/blah/[TXT]
[BAT] /path/to/blah/[BAT]
Então, descobri que posso fazer csplit
, pelo menos parcialmente, o que queria alcançar.
csplit -f 'paths-' -b '%04d.txt' 'path/to/filelist.txt' '/^\[(.*)]\t/' '{*}'
No entanto, isso se divide em paths-0000.txt
.
Eu estava esperando por algo mais parecido com paths-txt.txt
e paths-bat.txt
.
Existe alguma maneira de conseguir a correspondência de regex na correspondência de prefixo?
Eu tentei coisas como -f 'paths-$1.txt'
e -f 'paths-\1.txt'
.
Mas nenhum deles fez o que eu esperava que fizessem.
Usar csplit é a ferramenta errada para este trabalho.
Usei o awk para conseguir o que estava tentando fazer.
awk -F"\t" '{print > $1".txt"}' /path/to/filelist.txt
Você pode, se desejar, limitá-lo para que apenas certas partes do arquivo sejam mantidas após a divisão, mas eu precisava/queria tudo.
awk -F"\t" '{print $2 > $1".txt"}' /path/to/filelist.txt