正在搜索" /"使用awk

时间:2013-01-07 17:19:03

标签: awk

我想在以下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

2 个答案:

答案 0 :(得分: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}'

答案 1 :(得分: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}'