AIX 中的剪切命令

Posted

技术标签:

【中文标题】AIX 中的剪切命令【英文标题】:Cut command in AIX 【发布时间】:2021-06-15 21:36:05 【问题描述】:

我们想通过在 AIX 7 上使用 shell 脚本来自动化磁盘清理过程。我们需要编写一个 shell 脚本来根据磁盘百分比清理磁盘

df -Pg 的示例输出

user:host:/:>df -Pg

Filesystem    GB blocks      Used Available Capacity Mounted on

/dev/hd4           5.00      0.05      4.95       2% /

/dev/hd2           6.00      3.63      2.37      61% /usr

/dev/work1lv   1074.50    377.46    697.04      36% /work1

... some lines are ommitted and it continues

我们只想使用 cut 命令检查容量百分比 我们不能只列出作为剪切命令 -f 的参数给出的第 5 列。如果我们成功正确显示,我们将继续使用 shell 脚本清理部分。

df -Pg | cut -f5 -d' '

上述命令的输出不是我们所期望的。

【问题讨论】:

我会像这样从 sg 开始:COLUMNS=1024 df | sed -n 's/^\([^ ]*\) .*\( [^ ]*\)%.*$/\1 \2/p' 【参考方案1】:

cut 命令将每个分隔符都视为一个新字段的开始;如果您告诉它根据空格和制表符分隔输出,则每个空格都会创建一个新字段。这就是你得到意外输出的原因。

使用awk 可以更直接地打印字段5,它将任意数量的连续空格组合成一个分隔符:df -Pg | awk 'print $5'。但是,您仍然有两个问题需要解决:跳过标头并考虑在其挂载点中有空间的文件系统。您可以相当轻松地跳过标题,因为它是输出的第一行:df -Pg | awk 'NR > 1 print $5',但处理剩余字段需要更多工作。

我建议您对the df command 使用不同的选项来请求具有特定字段的以冒号分隔的输出:df -c -F %z %m-F 选项自动包含文件系统设备和块字段,因此您希望跳过这些。我们仍然想跳过标题,所以我们最终得到:

df -c -F %z %m | sed 1d | cut -d: -f3,4

... 删除第一行,然后只输出第三和第四个冒号分隔的字段。这应该为您的监控程序提供相关信息。根据您正在执行的操作,如果您需要检查可用卷组空间,您可能需要包含字段 1(设备)。请注意,df 输出会在挂载点字段的开头添加一个空格(这可能是请求以冒号分隔的输出及其解析 -F 参数的副作用)。另请注意,您可能会看到网络安装的文件系统;如果您只想查看本地文件系统,请添加 -T local 选项:

df -T local -c -F %z %m | sed 1d | cut -d: -f3,4

【讨论】:

以上是关于AIX 中的剪切命令的主要内容,如果未能解决你的问题,请参考以下文章

AIX 版本 6.1 中的查找命令

AIX中的网络类命令

AIX中PV,VG,LV及FS常用相关命令

IBM AIX 中 objdump 的等效命令是啥

aix系统命令

aix查看历史命令