Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.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 在mac终端中过滤文件_Linux_Shell_Unix_Terminal_Data Science - Fatal编程技术网

Linux 在mac终端中过滤文件

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

我是这方面的新手,如果标签不正确,很抱歉,我不能完全确定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<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