过滤mac终端中的文件

时间:2017-10-17 10:36:55

标签: linux shell unix terminal data-science

我是一个完整的新手,抱歉,如果标签不正确,我不能完全确定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而只导出特定列的数据的基础知识。

非常感谢任何帮助

1 个答案:

答案 0 :(得分:1)

你正在以正确的方式接近它,但存在一些问题。

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

编辑: 如果您使用制表符作为分隔符,并且在制表符之前和之后没有前导空格(因为管道|周围):

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