我有一个类似这样的文件:
3 EOE
5 APPLE
6 NOBODY
我需要解析这个并将第一列中的'3'输出到filename.3中,将'4'输出到filename.4,等等...来自unix提示符
答案 0 :(得分:4)
这样的事情应该有效(我还没有测试过):
while read num rest; do
echo "$num $rest" >> "filename.$num"
done < inputFile
read
将读取一行文本,然后将其在空白处拆分为“单词”,就像运行命令一样。它将第一个“单词”分配给第一个变量名称(在这种情况下为num
- 将获得数字),第二个“单词”分配给第二个变量名称(rest
),等等上。如果它用完了变量,它会将该行的其余部分追加到最后一个变量(rest
,这里)。
当read
成功处理一行时,它返回零,这在shell脚本中是“成功”,因此while
循环将继续,读取后续行。当read
点击文件末尾时,它将返回1,停止while
循环。
答案 1 :(得分:4)
awk '{print $2 >> "filename."$1 }' filename
如果您想要整个行:
awk '{print $0 >> "filename."$1 }' filename
答案 2 :(得分:0)
使用bash for循环,剪切和grep
for i in `cut -s -d ' ' -f 1 input.txt`; do
grep ^$i input.txt > filename.$i
done;