linux - 根据第一个字段对内容进行排序并将第二个字段输出到新文件中

标签 linux bash shell redhat

我有一个这样的文件:

 3 EOE
 5 APPLE
 6 NOBODY

我需要解析它并在第一列中将所有带有“3”的内容输出到 filename.3,将“4”输出到 filename.4,等等...从 unix 提示符

最佳答案

像这样的东西应该可以工作(我还没有测试过):

while read num rest; do
   echo "$num $rest" >> "filename.$num"
done < inputFile

read 将读取一行文本,然后在空白处将其拆分为“单词”,就像您运行命令时一样。它会将第一个“单词”分配给第一个变量名(在本例中为 num - 它将获取数字),第二个“单词”分配给第二个变量名(rest), 等等。如果它用完了变量,它将把该行的剩余部分追加到最后一个变量(rest,此处)。

read 成功处理一行时,它返回零,这在 shell 脚本中是“成功”,因此 while 循环将继续进行,读取后续行。当 read 到达文件末尾时,它将返回 1,停止 while 循环。

关于linux - 根据第一个字段对内容进行排序并将第二个字段输出到新文件中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3845567/

相关文章:

java - 命令是否从 shell 脚本中的当前目录运行?

bash - 将命令的输出传递给 shell 脚本中的变量

linux - 尽可能晚地在 Linux 启动时运行脚本

linux - 符号链接(symbolic link)检查 - Linux Bash 脚本

linux - 具有错误控制的 shell 并行编程

json - 提取 moSTLy JSON 文件的有效部分

php - 具有相同请求 header 的 BASH cURL 和 PHP cURL 的不同响应

linux - 如何在 CentOS 5 上更新/usr/lib/libstdc++.so.6?

linux - 如何创建 Nagios 监视器

python - 为什么 'python --version'不打印字符串