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