Linux 在mac终端中过滤文件
我是这方面的新手,如果标签不正确,很抱歉,我不能完全确定mac终端和unix/linux之间的区别 我正在mac终端上处理一个文本文件 我正在尝试筛选第4列,以便只显示带有John的行。然后将第三行导出为csv 例如:Linux 在mac终端中过滤文件,linux,shell,unix,terminal,data-science,Linux,Shell,Unix,Terminal,Data Science,我是这方面的新手,如果标签不正确,很抱歉,我不能完全确定mac终端和unix/linux之间的区别 我正在mac终端上处理一个文本文件 我正在尝试筛选第4列,以便只显示带有John的行。然后将第三行导出为csv 例如: 1 | 11/11/11 | 8:01 | John was here<br/> 2 | 12/11/11 | 8:02 | Derek was here<br/> 3 | 13/11/11 | 8:03 | John was also here<b
1 | 11/11/11 | 8:01 | John was here<br/>
2 | 12/11/11 | 8:02 | Derek was here<br/>
3 | 13/11/11 | 8:03 | John was also here<br/>
4 | 14/11/11 | 8:04 | Bob was here<br/>
我缺少显示只有John的数据,而只导出特定列的基本原理
任何帮助都将不胜感激您的方法是正确的,但是有几个问题
cut
的默认分隔符是制表符,因此需要告诉它使用
:cut-d'.'-f4数据文件名
这将为您提供:
John was here
Derek was here
John was also here
Bob was here
注意每行前面的额外空间。如果需要,可以使用cut-c2-
grep的-o
标志将使其仅输出匹配的行部分。如果需要完整列,则应省略此标志:grep“John”
合并:
cut-d'|'-f4数据文件名| cut-c2-| grep“John”| sort-r
John was here
John was also here
编辑:
如果使用制表符作为分隔符,并且制表符前后没有前导空格(就像管道周围的空格一样
):
cut-f4数据文件名| grep“John”| sort-r
我忘了提到文本文件中的分隔符是选项卡。在这种情况下,不要包含-d'|'
,它应该可以正常工作。如果选项卡后面没有空格,您也可能不需要cut-c2-
部分。嘿,汤姆,我怎么才能只显示包含john的行的时间呢?我试着添加| sort-k3>Export_File_CSV.CSV,但这不起作用。你可以先用grep for John,然后用cut来获取你想要的列。你需要将文件传递给grep而不是cut:grep“John”Data_File | cut-f3
是一个分隔符还是为了清晰起见才在这里显示的?您的问题不是很清楚,请也添加示例输出。
John was here
John was also here