我目前有以下内容:
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
感谢您的帮助!
答案 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