在外部awk中包装管道unix命令

时间:2014-08-01 05:44:29

标签: bash unix awk sed grep

我目前有以下内容:

grep -o 'Dr.*,\|Hon.*,\|Mr.*,\|Ms.*,\|Mrs.*,' parliament.txt | sed 's/,$//'

让我输出如下:

Mr Andrew Wilkie
Mr Tony Windsor
Mr Ken Wyatt
Mr Tony Zappia

我想根据一个条件打印原始行,例如个人的姓氏是否以特定字符结尾?我猜我必须使用awk吗?

我对Unix很陌生,因此不确定如何做到这一点。

以下是文件中的几行:

注意:姓氏不会总是在第三栏

Ms Jill Hall, Member for Shortland
Mr Luke Hartsuyker, Member for Cowper
Mr Alex Hawke, Member for Mitchell

如果我正在寻找姓氏以e结尾的人,那么我会打印:

Mr Alex Hawke, Member for Mitchell

感谢您的帮助!

2 个答案:

答案 0 :(得分:1)

似乎敬语从第一列开始,姓氏在第一个逗号之前结束。在这种情况下,要查找以e结尾的姓氏:

$ grep -E '^(Dr|Hon|Mr|Ms|Mrs)[^,]+e,' parliament.txt
Mr Alex Hawke, Member for Mitchell

密钥添加是[^,]+e,,它匹配非逗号上的任何数字,后跟e,后跟逗号。

我使用-E来避免所有这些反斜杠。如果您的grep不支持扩展正则表达式,则需要重新添加反斜杠。

要获取整个原始行,而不只是匹配的部分,-o选项已被删除。

答案 1 :(得分:0)

试试这个,

sed -n '/^.*e,/p' filename 
相关问题