Deve ser possível com um único comando awk
awk '{print $1 > $2".lst"}' xxx.lst
Eu tenho um arquivo, xxx.lst
com os seguintes dados:
aaa 111
bbb 222
ccc 333
Eu preciso criar três arquivos chamados 111.lst
, 222.lst
e 333.lst
respectivamente
com
aaa
em 111.lst
bbb
em 222.lst
e
ccc
em 333.lst
Eu tentei algo assim:
for x in $(cat xxx.lst|awk '{print $1}');do
for y in $(cat xxx.lst|awk '{print $2}'|cut -d_ -f3|sort|uniq);do
echo $x > $y.lst
done
done
mas isso me dá ccc
em todos os 3 arquivos
Você pode fazer algo assim:
#!/usr/bin/env bash
while read var1 var2; do
echo "$var1" > "$var2".lst
done < xxx.lst