如何从一个包含分隔符的列文件中使用grep和cut命令?

4

我有一个包含多行的文件,每行使用|分隔为多个列。 我可以使用grep查找特定的行,也可以使用cut截取特定的列,但我无法同时做到两者。

grep '^1001' customer

从名为“customer”的文件中获取以1001开头的行。
cut -d "|" -f 3 customer

从客户文件的所有行中删除第三列。

所以……

grep '^1001' customer | cut -d "|" -f 3 customer

如果你想要以1001开头的行,请在grep命令中添加^,如下所示:grep "^1001" - squiguy
2个回答

6

当您调用cut时,只需省略文件名,它将使用grep的输出作为其输入:

grep 1001 customer | cut -d "|" -f 3

值得注意的是,grep 1001 并不仅仅匹配以 1001 开头的行,而是匹配 包含 1001 的行。

非常感谢!也谢谢你的提示,那对我来说非常重要和有帮助。 - Andrew Tsay

4
更好的方法是像这样请求此任务,避免使用多个管道命令
awk -F "|" '$1==1001{print $3}' customer

不过,这里使用字段比较会更好:awk -F "|" '$1==1001{print $3}' customer - Chris Seymour
1
@sudo_O 谢谢,我已经编辑了我的答案。最初,OP的问题只是要求在整行中匹配此字符串,因此我将其设置为/1001/ - anubhava

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接