我完全是一个新手,抱歉,如果标签不正确,我不能完全确定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/>
到目前为止,我只导出了我要筛选的值…
cut -f 4 Data_File_Name | grep -o "John" | sort -r > Export_CSV_File.csv
我忽略了显示只有john的数据而只导出特定列的基本原理。
任何帮助都将不胜感激
最佳答案
你的方法是正确的,但有几个问题。cut
的默认分隔符是制表符,因此需要告诉它使用|
:cut -d '|' -f 4 Data_File_Name
这将给你:
John was here
Derek was here
John was also here
Bob was here
注意每行前的多余空间。如果需要,可以使用
cut -c 2-
删除此项grep的
-o
标志将导致它只输出匹配行的一部分。如果需要整列,则应省略此标志:grep "John"
合并:
cut -d '|' -f 4 Data_File_Name | cut -c 2- | grep "John" | sort -r
John was here
John was also here
编辑:
如果使用制表符作为分隔符,并且制表符前后没有前导空格(管道周围也没有前导空格):
|
关于linux - 在Mac终端中过滤文件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46788114/