awk +从用双引号定义的行打印字段

时间:2014-10-26 11:27:46

标签: linux bash awk sed

如何从用双引号定义的行打印第三个字段

例如

echo activate.bash /home/adm/run.sh "run on machine with eth2 active" "94061" | awk '{print $3}'

我预计awk会在双引号中打印第三个字段

 run on machine with eth2 active

但是它的印刷品

 run

那么我需要在我的ksh语法中修复什么?

其他例子

echo 123 123 "1 2 3 4 5" | awk '{print $3}'

应该打印

1 2 3 4 5

2 个答案:

答案 0 :(得分:0)

您可以在awk中使用自定义字段分隔符,如下所示:

s='activate.bash /home/adm/run.sh "run on machine with eth2 active" "94061"'
echo "$s" | awk -F '"' '{print $2}'
run on machine with eth2 active

PS:更好用:

awk -F '"' '{print $2}' <<< "$s"

Working Code Demo

答案 1 :(得分:0)

我们采取以下示例:

 cat numbers
 123 123 "run on machine with eth2 active" "94061"


cat numbers | awk -F '"' 'BEGIN{OFS=" ";} {print $2;}'

输出:在启用了eth2的计算机上运行