Uma solução simples de script awk. O segundo campo é gravado em um arquivo chamado no primeiro campo.
awk '{ print $2 > $1 }' your-file
Eu tenho esta saída (de um comando anterior):
aaa something
bbb someother
ccc blabla
Para cada linha, eu gostaria de criar um arquivo cujo nome é o primeiro token, e cujo conteúdo é o segundo token (por exemplo, para a primeira linha eu gostaria que um arquivo chamado 'aaa' que contém o texto 'algo ')
Como devo fazer isso?
A resposta do @humanusus está correta. Para casos mais complicados em que você pode ter algo assim:
aaa something, something more and a bit extra
bbb someother someother more and a few more chars
ccc blabla blah blah boloum bloum bleh
E gostaria que o nome fosse o primeiro campo e o conteúdo fosse o restante da linha, tente isto:
awk '{for(i=2; i<=NF; i++){ printf $i" " >> $1 };print "" >> $1;}' file
Ou, em Perl:
perl -ane 'open($f,">",shift(@F));print $f "@F\n"' file
your_command | while read name text; do
echo "$test" > $name
done
Observe que a variável IFS
envoronment influencia a maneira como isso é analisado (divisão de palavras) e que você precisa ter cuidado extra para não ter caracteres "especiais" nos nomes dos arquivos (e o texto).