Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 根据第一个字段对内容进行排序,并将第二个字段输出到新文件中_Linux_Bash_Shell_Redhat - Fatal编程技术网

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;