为什么我的awk子命令失败了?

Kin*_*Net 4 unix shell awk

我跑的时候

df -hl | grep '/dev/disk1' | awk '{sub(/%/, \"\");print $5}'
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

awk: syntax error at source line 1
context is
    {sub(/%/, >>>  \ <<< "\");}
awk: illegal statement at source line 1
Run Code Online (Sandbox Code Playgroud)

我似乎无法找到关于awk sub的任何文档.

df -hl | grep '/dev/disk1'
Run Code Online (Sandbox Code Playgroud)

回报

/dev/disk1                         112Gi   94Gi   18Gi    85% 24672655 4649071   84%   /
Run Code Online (Sandbox Code Playgroud)

据我了解,它应该返回使用的磁盘空间百分比.

它应该从输入返回85

/dev/disk1                         112Gi   94Gi   18Gi    85% 24699942 4621784   84%   /
Run Code Online (Sandbox Code Playgroud)

Nia*_*ove 5

这将修复您提供的命令.
df -hl | grep '/dev/disk1' | awk '{sub( /%/, ""); print $5 }' 无需逃避双引号.

当然你也不需要在这里使用grep.
df -hl | awk '/disk1/ { sub( /%/, "", $5); print $5}'

请注意,您可以将替换的目标作为第三个参数提供给sub.

子命令在本页的gawk手册中描述.