在 mac 终端中过滤文件

Filtering a file in mac terminal

我在这方面完全是个新手,如果标签不正确,我很抱歉我不完全确定 mac 终端和 unix/linux 之间的区别。

我正在 mac 终端上处理文本文件。

我正在尝试过滤第 4 列,以便仅显示具有 John 的行。然后将第 3 行导出到 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

注意每行前的额外 space。如果需要,可以使用 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

编辑: 如果您使用制表符作为定界符,并且制表符前后没有前导 space(就像管道 | 周围一样):

cut -f 4 Data_File_Name | grep "John" | sort -r