我有这个值
option 'staticip' '5.5.5.1'
我只想打印5.5.5.1
而没有引号。我用了
cat /etc/filename | grep staticip | awk '{print $3}'
但结果来自'5.5.5.1'
答案 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 从输出中删除所有 ' 并非总是如此。