0

我的代码行如下。

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" 

任何人都可以帮忙吗?

4

3 回答 3

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

但由于您没有提供示例输入和预期输出,这只是一个猜测。

于 2013-09-19T18:20:18.147 回答
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
}
于 2013-09-19T17:43:44.457 回答
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,参数 toawk字面意思是

BEGIN {printf "gnome-terminal"} {printf " --tab -e  'bash -c \"telnet "$4" "$6 " |  tee " $1$12"\"' -t \"" $1" "$12 "\""  } END { printf "\n"}
于 2013-09-19T16:02:17.903 回答