Eu tenho muitos arquivos .txt que se parecem com:
arquivo1.txt
header
1_fff_aaa 1_rrr_aaa 1_ggg_aaa ...
arquivo2.txt
header
1_ttt_aaa 1_iii_aaa 1_lll_aaa ...
Gostaria de remover o cabeçalho e dividir a string da segunda linha em várias linhas após o espaço em branco e pegar o padrão entre o caractere _:
Saída:
file1_v1.txt
fff
rrr
ggg
file2_v1.txt
ttt
iii
lll
Eu gostaria de utilizar comandos unix como sed
Algo parecido:
Programa:
split.awk
Executado assim:
Para executá-lo em vários arquivos:
ATUALIZAR
Você também pode usar
sed
&tr
:Isso pode funcionar para você (GNU sed):
Use a opção de linha de comando
-i
para substituir inline.Exclua a primeira linha de cada arquivo (remova o cabeçalho).
Substitua os espaços em branco por novas linhas. Isso converterá cada token em uma linha separada.
Remova a primeira parte da string até a primeira parte
_
de todas as linhas no espaço padrão.Retire do primeiro
_
ao final da linha, deixando o resultado.NB A
-i
opção pode ser substituída pela-s
opção se o usuário precisar apenas de saída para stdout de um ou mais arquivos. Observe também om
sinalizador nos dois últimos comandos de substituição que altera a substituição usual para beneficiar os padrões multilinhas.Para alterar os nomes dos arquivos de saída, utilize o paralelo GNU: