如何使用Bash根据关键字将文件内容分隔为列
我有一个如何使用Bash根据关键字将文件内容分隔为列,bash,grep,Bash,Grep,我有一个文件.txt,其内容如下: co001 done co002 done co003 not run co004 running 我想读取文件.txt,根据行中是否包含“完成”、“未运行”或“正在运行”将行排序为列,并在屏幕上显示以下内容 co001 done co003 not run co004 running co002 done 到目前为止,我知道我可以使用grep来提取“done”或“notrun”行,但我不知道如何将grep结果排序到列中。我认为“colum
文件.txt
,其内容如下:
co001 done
co002 done
co003 not run
co004 running
我想读取文件.txt
,根据行中是否包含“完成”、“未运行”或“正在运行”将行排序为列,并在屏幕上显示以下内容
co001 done co003 not run co004 running
co002 done
到目前为止,我知道我可以使用grep来提取“done”或“notrun”行,但我不知道如何将grep结果排序到列中。我认为“column”命令在某种程度上会有所帮助,但我想不出该怎么做
这应该是一条直线,对吗 将
paste
命令与bash
提供的进程替换相结合如何:
paste <(grep "done" file.txt) <(grep "not run" file.txt) <(grep "running" file.txt)
粘贴请您尝试:粘贴是的,它可以工作!非常感谢齐奥诺!你介意把它作为正式答案,这样我就可以把它标记为已回答了吗?我对这个问题稍加修改,但你的回答仍然回答了这个问题。也许您可以使用粘贴您的问题被标记为[bash],因此使用流程替换(例如,@Jacek感谢您的及时反馈。我准备将其作为官方答案发布,但让我澄清一件事。您的评论包括关键字done
,但您更新的问题没有。哪一个是正确的?@tshiono我意识到我在问题中使用了“run”一词,而在我的实际文件中它使用了这个词“完成”。我将问题编辑为使用“完成”、“不运行”和“运行”,只是为了与我们在这里的讨论保持一致。