替代awk

jma*_*mac 5 awk expect

我在expect脚本中使用以下awk命令来获取特定目标的网关

route | grep $dest | awk '{print $2}'
Run Code Online (Sandbox Code Playgroud)

但是,期望脚本不喜欢上述声明中的$ 2.

有没有人知道awk的替代方法可以执行与上面相同的功能?即.输出第2列.

Ale*_*lex 6

你可以使用cut:

route | grep $dest | cut -d \  -f 2
Run Code Online (Sandbox Code Playgroud)

它使用空格作为字段分隔符并拉出第二个字段

  • 这将使用空格作为分隔符,但如果有多个空格,则每个空格将有一个字段.最好在之前使用sed删除重复的空格. (2认同)

gle*_*man 5

为了回答您的 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)