Bash 更改awk的格式

Bash 更改awk的格式,bash,awk,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

下面是我的代码行

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" 

有人能帮忙吗?

试试这种双引号格式:

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"}

尝试此双引号引用格式:

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"}

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

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
}

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

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
}

你可能想要这样的东西:

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

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

您可能需要以下内容:

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

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

这里更大的目标是什么?如果以后要执行
gnome终端
命令,可能有一种比使用awk生成命令更好的方法。这里更大的目标是什么?如果以后要执行
gnome终端
命令,可能有一种比使用awk生成命令更好的方法。@user2796211我以前确实犯过错误。请再试一次。另外,不要使用第二个。这只是一种解释,真奇怪。一个类似这样的伪命令:
awk“BEGIN{printf\'gnome terminal\'}{printf\'--tab-e'bash-c\\\'telnet\'\$4\'\'\'\$6\'\$12\'\\\'''-t\\\$1\'\'\$12\\'\\\'\'\'\'\'\'\'}END{printf\\\\\\\'\\'\'\'\'\'\'\\\'\'\\\\\''\\\\'''''\\\\\\''\\\\\\\\\\。请再试一次。另外,不要使用第二个。这只是一种解释,真奇怪。类似这样的伪命令:
awk“BEGIN{printf\'gnome terminal\'}{printf\'--tab-e'bash-c\\\\'telnet\'\$4\'\'\'\$6\'\$12\\'\\\''-t\\\$1\'\'\$12\\\\'\'\'\'\'\'\'\'}END{printf\\\\\'\\\\'''\\'<