Linux 根据第一个字段对内容进行排序,并将第二个字段输出到新文件中
我有一个文件是这样的:Linux 根据第一个字段对内容进行排序,并将第二个字段输出到新文件中,linux,bash,shell,redhat,Linux,Bash,Shell,Redhat,我有一个文件是这样的: 3 EOE 5 APPLE 6 NOBODY 我需要解析它,并将第一列中带有'3'的所有内容输出到文件名中。3,'4'输出到文件名中。4等等。。。在unix提示符下,类似这样的操作应该可以正常工作(我还没有测试过它): 读取num rest时;做 回显“$num$rest”>>“文件名.$num” 完成>“文件名.$num” 完成
3 EOE
5 APPLE
6 NOBODY
我需要解析它,并将第一列中带有'3'的所有内容输出到文件名中。3,'4'输出到文件名中。4等等。。。在unix提示符下,类似这样的操作应该可以正常工作(我还没有测试过它): 读取num rest时
;做
回显“$num$rest”>>“文件名.$num”
完成<输入文件
read
将读取一行文本,然后在空白处将其拆分为“单词”,就像在运行命令时一样。它将第一个“单词”分配给第一个变量名(num
,在本例中,它将获得数字),第二个“单词”分配给第二个变量名(rest
),依此类推。如果变量用完,它将把行的剩余部分附加到最后一个变量(rest
,此处)
当
read
成功处理一行时,它返回零,这在shell脚本中是“success”,因此while
循环将继续运行,读取后续行。当read
到达文件末尾时,它将返回1,在循环时停止。类似的操作应该可以工作(我没有测试它):
awk '{print $2 >> "filename."$1 }' filename
读取num rest时;做
回显“$num$rest”>>“文件名.$num”
完成<输入文件
read
将读取一行文本,然后在空白处将其拆分为“单词”,就像在运行命令时一样。它将第一个“单词”分配给第一个变量名(num
,在本例中,它将获得数字),第二个“单词”分配给第二个变量名(rest
),依此类推。如果变量用完,它将把行的剩余部分附加到最后一个变量(rest
,此处)
当read
成功处理一行时,它返回零,这在shell脚本中是“success”,因此while
循环将继续运行,读取后续行。当read
到达文件末尾时,它将返回1,从而在循环时停止
awk '{print $2 >> "filename."$1 }' filename
如果您想要整条线路:
如果您想要整条线路:
对循环、剪切和grep使用bash
for i in `cut -s -d ' ' -f 1 input.txt`; do
grep ^$i input.txt > filename.$i
done;
对循环、剪切和grep使用bash
for i in `cut -s -d ' ' -f 1 input.txt`; do
grep ^$i input.txt > filename.$i
done;