我在expect脚本中使用以下awk命令来获取特定目标的网关
route | grep $dest | awk '{print $2}'
Run Code Online (Sandbox Code Playgroud)
但是,期望脚本不喜欢上述声明中的$ 2.
有没有人知道awk的替代方法可以执行与上面相同的功能?即.输出第2列.
你可以使用cut:
route | grep $dest | cut -d \ -f 2
Run Code Online (Sandbox Code Playgroud)
它使用空格作为字段分隔符并拉出第二个字段
为了回答您的 Expect 问题,单引号对 Tcl 解析器没有特殊意义。您需要使用大括号来保护 awk 脚本的主体:
route | grep $dest | awk {{print $2}}
Run Code Online (Sandbox Code Playgroud)
由于 awk 可以完成 grep 所做的事情,因此您可以减少一个过程:
route | awk -v d=$dest {$0 ~ d {print $2}}
Run Code Online (Sandbox Code Playgroud)