我想在以下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
?
答案 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}'