剪切命令不返回正确的输出

时间:2014-07-11 20:21:48

标签: shell cut

方案

我正在尝试使用cut命令从具有重定向输出df命令的文件中获取第4个字段。但由于某种原因,它只是削减并返回第一场。

df -kh -B 1g /ws/abc-Location03 > file1.txt
cut -d" " -f4 file1.txt

输出我的df命令

Filesystem           1G-blocks      Used Available Use% Mounted on
abc5-xyz04c:/root_vdm_6/t2local24/abc-Location03
                       500       408        93  82% /ws/abc-Location03

剪切命令的输出

abc5-xyz04c:/root_vdm_6/t2local24/abc-Location03

基本上,它只切割第一个区域并返回它,而不是第四个区域。我想知道我做错了什么。

3 个答案:

答案 0 :(得分:2)

您可以改为使用awk

df -kh -B 1g /ws/abc-Location03 | awk '{print $4}'

答案 1 :(得分:1)

因为您要分隔空格而不是重复空格,所以您的列会搞乱。试试这个:

df -kh -B 1g | tr -s ' ' | cut -d ' ' -f 4

tr将所有重复的空格转换为单个空格,因此您可以随意剪切它们。

答案 2 :(得分:0)

对于这个以及许多其他类似的问题,最短的解决方案可能是使用cuts("削减类固醇")试图解决cut的大多数痛点

示例:

$ df -kh -B 1g / | cuts 3
Used
25

http://arielf.github.io/cuts/