我有这个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'结尾
答案 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作为最后一个字符,但在换行前检查一些空格。