有没有使用echo的grep或awk的答案,但是我希望将返回值赋给变量。如下所示:
a="hello world"
value="$a" | grep "world" | awk '{print $NF}'
echo $value
但是值是空的。 我不想使用echo获得如下所示的值:
value=$(echo "$a" | grep "world" | awk '{print $NF}')
我可以使用第一个代码吗?
答案 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的注释,他“希望更快地运行代码”)。