没有报价标志的awk打印值

时间:2013-02-01 06:37:14

标签: linux bash centos

我有这个值

option 'staticip' '5.5.5.1'

我只想打印5.5.5.1而没有引号。我用了

cat /etc/filename | grep staticip | awk '{print $3}'

但结果来自'5.5.5.1'

5 个答案:

答案 0 :(得分:8)

或者,您可以使用tr删除有问题的字符:

cat /etc/filename | grep staticip | awk '{print $3}' | tr -d \'

答案 1 :(得分:1)

您可以使用awk的gsub()函数将引号更改为空。

awk '{gsub(/'"'"'/, "", $3); print $3}'

请注意,这确实是gsub(/'/, "", $3)。丑陋来自于将报价粘在一起的必要性。

答案 2 :(得分:0)

awk '$2=="staticip" && $0=$4' FS="'"

结果

5.5.5.1

答案 3 :(得分:0)

你可以使用awks substr函数或管道来执行cut命令。我留给您阅读awk substr。

的手册页

答案 4 :(得分:0)

要从 awk 输出中删除 ',您可以使用 sed "s/^'//;s/'$//" 此命令仅在输出行的开头和结尾删除 ' 并且不会像使用 awk 那样沉重,如果使用 tr 则不会那么通用。 awk 在内存中要大得多,而 tr 从输出中删除所有 ' 并非总是如此。