使用awk在两个实践之间提取字符串

时间:2017-11-08 13:26:03

标签: bash awk

我尝试使用awk从字符串中读取字符串。 我的字符串:

str = /xx/{hello}/xxx/xx{there}/xxx [again]

我想提取helloagain。 我已经成功地使用了第一件事:

echo $str | awk -F[{}] '{print $2}'

但是我试图对[]之间的字符串做同样的事情,我不能。还尝试了awk -F[[]] '{print $2}'awk -F[/[/]] '{print $2}'

任何帮助将不胜感激。 感谢

2 个答案:

答案 0 :(得分:2)

关注awk可以帮助您。

echo "$str" | awk -F"[]}{[]" '{print $2,$6}'

输出如下。

hello again

此外,您应该为str变量值分配空格,如下所示。

str="/xx/{hello}/xxx/xx{there}/xxx [again]"

答案 1 :(得分:1)

您可以使用以下awk程序:

awk '!(NR%2)' RS='[][{}]' <<< "${str}"

在做什么?

基本上,我们使用{}[]作为记录分隔符。这意味着awk会看到以下记录的序列

/xx/
hello
/xxx/xx
there
/xxx 
again

感兴趣的条款始终显示在偶数记录中。在这种情况下,记录2,4和6. awk '!(NR%2)'打印具有偶数索引的记录。