Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/16.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
如何使用Bash根据关键字将文件内容分隔为列_Bash_Grep - Fatal编程技术网

如何使用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”一词,而在我的实际文件中它使用了这个词“完成”。我将问题编辑为使用“完成”、“不运行”和“运行”,只是为了与我们在这里的讨论保持一致。