![使用 grep 查找一行中的最后一项](https://linux22.com/image/103966/%E4%BD%BF%E7%94%A8%20grep%20%E6%9F%A5%E6%89%BE%E4%B8%80%E8%A1%8C%E4%B8%AD%E7%9A%84%E6%9C%80%E5%90%8E%E4%B8%80%E9%A1%B9.png)
我正在尝试使用 grep 获取特定模式的最后一个单词或短语。在此示例中,它将是从最后一个逗号到行尾的:
Blah,3,33,56,5,Foo 30,,,,,,,3,Great Value
因此该行想要的输出将是“伟大的价值”。所有行的长度也不同,但最后一个单词之前始终有一个逗号。
基本上,我想简单地从最后一个逗号输出到行尾。谢谢你!
答案1
这里:
grep -o '[^,]\+$'
[^,]\+
匹配一个或多个不在,
行尾的字符 ($
)-o
仅打印匹配的部分
例子:
% grep -o '[^,]\+$' <<<'Blah,3,33,56,5,Foo 30,,,,,,,3,Great Value'
Great Value
答案2
总是喜欢看到awk
解决方案,所以这里是(赞成正确的解决方案!):
% awk -F, '{print $NF}' <<<'Blah,3,33,56,5,Foo 30,,,,,,,3,Great Value'
Great Value
答案3
也许这会给你想要的输出
命令 :
#!/bin/bash
echo "Blah,3,33,56,5,Foo 30,,,,,,,3,Great Value" | rev | awk -F',' '{ print $1 }' | rev
输出 :
Great Value
在此网站上测试:https://rextester.com/KNMI75463