0

我想在以下 df 输出中搜索/以下内容:Mounted on

Filesystem     1K-blocks     Used Available Use% Mounted on
/dev/sda1      471081708 82857660 364294432  19% /
udev             2046164        4   2046160   1% /dev
tmpfs             822540     1376    821164   1% /run
none                5120        0      5120   0% /run/lock
none             2056344      388   2055956   1% /run/shm
/dev/sdb1      228917696 21117560 195590336  10% /media/xtra

但是,这个命令

df | awk -F" " /\// '{print $6 "\t" $4}'

导致此错误

awk: cmd. line:1: ///
awk: cmd. line:1:    ^ unexpected newline or end of string

如何搜索/Mounted on

4

2 回答 2

2

您的模式在引号之外:

$ df | awk '/\//{print $6 "\t" $4}'

您还可以在脚本开头指定输出字段分隔符:

$ df | awk 'BEGIN{OFS="\t"}/\//{print $6, $4}'

$ df | awk -v OFS="\t" '/\//{print $6, $4}'

但正如EdMorton指出的那样,每一行在标题旁边至少有一个/,所以你可以放弃比赛,只跳过第一行,比如:

$ df | awk 'NR>1{print $6 "\t" $4}'
于 2013-01-07T17:22:16.360 回答
1

您的模式并没有真正意义,因为您的 df 输出的每一行始终包含一个/. (除了标题)

如果要将输出重新格式化为$6\t$4

df|awk '{print $6"\t"$4}'

如果您的模式只是为了跳过标题,您可以:

 df|awk 'NR>1{print $6"\t"$4}'

如果您只想精确搜索/(根分区):

df|awk '$6~/^\/$/{print $6"\t"$4}'
于 2013-01-07T17:35:52.847 回答