更改awk的格式

时间:2013-09-19 15:57:50

标签: bash awk

我的代码行在下面。

awk 'BEGIN {printf "gnome-terminal"}
           {printf " --tab -e  \"telnet "$4" "$6 " |  tee " $1$12"\" -t \"" $1" "$12 "\""  }
     END   {printf "\n"}' temp1.prm >> abc

输出在abc中给出:

gnome-terminal --tab -e  "telnet 10.31.248.104 3007 |  tee dutA1MM1" -t "dutA1 MM1" 

我必须得到以下格式:

gnome-terminal --tab -e 'bash -c "telnet 10.31.248.104 3007 | tee script1.log"' -t "dutA1 MM1" 

有人可以帮忙吗?

3 个答案:

答案 0 :(得分:1)

请尝试使用双引号格式:

awk "BEGIN {printf \"gnome-terminal\"} {printf \" --tab -e  'bash -c \\\"telnet \"\$4\" \"\$6 \" |  tee \" \$1\$12\"\\\"' -t \\\"\" \$1\" \"\$12 \"\\\"\"  } END { printf \"\\n\"}" temp1.prm >> abc

使用echo进行测试,awk的参数确实是

BEGIN {printf "gnome-terminal"} {printf " --tab -e  'bash -c \"telnet "$4" "$6 " |  tee " $1$12"\"' -t \"" $1" "$12 "\""  } END { printf "\n"}

答案 1 :(得分:1)

不要陷入引用的噩梦。你可以保持整洁:

BEGIN {
    double_quote = "\""
    s1 = "gnome-terminal --tab -e 'bash -c "
    s2 = double_quote "telnet 10.31.248.104 3007 | tee script1.log" double_quote
    s3 = "' -t dutA1 MM1"

    printf "%s%s%s\n",s1,s2,s3
}

答案 2 :(得分:1)

你可能想要这样的东西:

awk '{ printf "gnome-terminal --tab -e \047bash -c \"telnet %s %s | tee script1.log\"\047 -t \"%s %s\"\n", $4, $6, $1, $12 }' file

但由于你没有提供样本输入和预期输出,所以只是一个猜测。