我完全是一个新手,抱歉,如果标签不正确,我不能完全确定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/

10-12 23:49