使用awk和grep到不回显的字符串,并将值返回给变量

时间:2018-11-15 13:31:14

标签: bash awk

有没有使用echo的grep或awk的答案,但是我希望将返回值赋给变量。如下所示:

a="hello world"
value="$a" | grep "world" | awk '{print $NF}'
echo $value

但是值是空的。 我不想使用echo获得如下所示的值:

value=$(echo "$a" | grep "world" | awk '{print $NF}')

我可以使用第一个代码吗?

2 个答案:

答案 0 :(得分:2)

如果您不想使用echo,请尝试使用以下命令,我在这里使用字符串概念。另外,您不必使用grep,因为awk本身可以搜索Input_file或变量值中的关键字。

a="hello world"
value=$(awk '/world/{print $NF}' <<<"$a")
echo "$value"

您可以从man bash获得有关Here Strings的更多信息,如下所示。

  

此处的字符串这里文档的一种变体,格式为:

      <<<word


编辑: :由于OP表示OP也不想拥有Here Strings概念,因此以下内容可能会有所帮助。

a="hello world"
value=$(awk -v val="$a" 'BEGIN{num=split(val, array," ");print array[num]}')
echo "$value"

答案 1 :(得分:1)

如果确定world是字符串的一部分,则可以使用

value=${a//* }

value=${a##* }

(不是使用awk的解决方案,而是考虑到OP的注释,他“希望更快地运行代码”)。