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

时间:2016-05-28 23:24:00

标签: shell unix awk

当我跑步时

StringTokenizer st = new StringTokenizer (line, String.valueOf(delimiter));

//Don't add this:
//labels.add("Time");

int currentCol = 1;                                                 
while (st.hasMoreTokens())
{
    String someThing = st.nextToken();
    labels.add(new String("Current token:" + someThing 
                   + "\n currentCol: " + currentCol++));                                
}

我收到以下错误:

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

我似乎找不到关于awk sub的任何文档。

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

返回

df -hl | grep '/dev/disk1'

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

它应该从输入

返回85
/dev/disk1                         112Gi   94Gi   18Gi    85% 24672655 4649071   84%   /

2 个答案:

答案 0 :(得分:5)

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

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

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

gawk手册on this page.

中描述了子命令

答案 1 :(得分:4)

也许你可以将它降低到df并用以下方式解决:

df --output=pcent /dev/disk1 | awk '/ /{printf("%d\n", $1)}'