我有一个文件,xxx.lst
包含以下数据:
aaa 111
bbb 222
ccc 333
我需要制作 3 个名为111.lst
,222.lst
和的文件,333.lst
分别用
aaa
in 111.lst
bbb
in222.lst
和
ccc
in333.lst
我尝试过这样的事情:
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
但它给了我ccc
所有 3 个文件
答案1
应该可以使用单个 awk 命令
awk '{print $1 > $2".lst"}' xxx.lst
答案2
你可以这样做:
#!/usr/bin/env bash
while read var1 var2; do
echo "$var1" > "$var2".lst
done < xxx.lst