awk命令默认的分隔符是空格和制表符,print 和printf在awk里面就是以空格和制表符作为分隔符的
print除了空格和制表符是分隔符,还可以自动换行
可以根据视频的内容自己记录,边听边练边记,这样可以加深印象
一个比较简单的做法是下个nodepad++ 打开文件,在视图里勾上显示空格与制表符,就一清二楚了
因为你的/dev/mapper/vg_centos64-lv_root 过长,使得size、used等的值是换行呈现的,因此你输出的第5列的第二行是空,而第三行是 / 。验证可将df -h的内容输出到某个文本中。df -h >> df.txt 然后cat df.txt 查看
这个应该是awk决定的吧,把它以参数的形式记录;bash是默认而已,那个之前有节课编写简单加法计算器时不就用了参数$1,$2来运算的么。
是同一回事的,printf主要用于awk中输出的
printf 是格式化输出,需要制定输出格式
df -h | grep "/dev/sd.." | awk '{printf "%s\n",$5}'
由于awk的执行原理是先读取数据再判断条件然后执行动作,所以awk在不加BEGIN的情况下先读取第一行数据也就是“root:0:0:root:/root:/bin/bash”再执行{FS=":"}、{printf $1 "\t" $3 "\n"}这两个动作,而此时由于第一条数据已经读取因此{FS=":"}这一动作只对后两条数据起作用