我的代码行在下面。
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"
有人可以帮忙吗?
答案 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
但由于你没有提供样本输入和预期输出,所以只是一个猜测。