在GREP中匹配ine的结尾

时间:2017-11-05 03:49:34

标签: regex bash grep

我有这个bash脚本,它应该匹配以'a'结尾的单词。但是,当我运行它时,我没有输出,尽管我的文本文件的单词以'a'结尾。

cat $1 | cut -d'|' -f3 | cut -d',' -f2 | sed 's/^ //' | egrep -i "a$"

如果我删除'$'它会显示输出,但是'$'则不返回任何内容。它仍然有效,只是不匹配。

希望得到一些帮助。感谢。

文件样本

  

MTNG1511 | 5013566 | Xin,Mackenzie Darren MTNG9902 | 5079970 | Park,Xue   Hannah Vanessa MTNG1511 | 5059072 | Chung,Michael Jia Tianyu   MTNG1521 | 5060774 | Lim,Stephanie Lauren MTNG1531 | 5060774 | Lim,Stephanie   Lauren MTNG2521 | 5060774 | Lim,Stephanie Lauren MTNG9020 | 5060538 |毕,   Samuel Shiyu MTNG9021 | 5060538 | Bi,Samuel Shiyu MTNG9902 | 5072116 | Hu,   凯智帕特里克

输出应为

  

Park,Xue Hannah Vanessa

因为它以'a'结尾

2 个答案:

答案 0 :(得分:0)

你的话语结尾可能有额外的空格。

尝试添加

sed 's/[ \t]*$//' 

删除空格 - 或者更改你的grep以允许最后的空格。

答案 1 :(得分:0)

使用grep

非常简单
grep -o '[^\|]\+$' < "$1" | grep 'a\s*$'

<强>输出

$ bash example file.txt 
Park, Xue Hannah Vanessa 
$

[^ \ |] \ +匹配一个或多个不是|的字符到最后一行。 a \ s * $匹配a作为最后一个字符,但在换行前检查一些空格。