awk命令在特定模式字符串后提取字符串

时间:2018-05-24 08:21:43

标签: shell awk

我想在列表中引号中的模式"List values are here:"之后提取文本。我对此非常陌生。有人可以帮忙吗

List values are here: "list1 abc" "list2 test" "end of list"

我做了什么:

echo $va| awk '/List values are here:/ {print $1}' var="$va"

2 个答案:

答案 0 :(得分:2)

您不需要使用awksed来执行此类任务,因为您只需要获取某行的某些部分。 grep是您正在寻找的工具。

$ grep -oP '(?<=List values are here: ).*'

示例:

$ echo 'List values are here: "list1 abc" "list2 test" "end of list"' | grep -oP '(?<=List values are here: ).*'
"list1 abc" "list2 test" "end of list"

之后,您可以将结果分配给变量或用它做任何你想做的事。

<强>说明:   - -o将更改grep的默认行为,该行为输出整行以仅输出模式   - -P是使用perl正则表达式   - (?<=List values are here: ).*正则表达式在List values are here:

之后获取所有内容

答案 1 :(得分:1)

$ echo "${val#*: }"
"list1 abc" "list2 test" "end of list"