使用 grep 查找一行中的最后一项

使用 grep 查找一行中的最后一项

我正在尝试使用 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

相关内容