1、了解 $0 的意义,$0 等于是输入。
XX@MacPro ~ df -h |awk '{print $0}'
Filesystem Size Used Avail Capacity iused ifree %iused Mounted on
/dev/disk2s1 1.0Ti 275Gi 759Gi 27% 1962828 9223372036852812979 0% /
devfs 340Ki 340Ki 0Bi 100% 1179 0 100% /dev
/dev/disk2s4 1.0Ti 2.0Gi 759Gi 1% 1 9223372036854775806 0% /private/var/vm
map -hosts 0Bi 0Bi 0Bi 100% 0 0 100% /net
map auto_home 0Bi 0Bi 0Bi 100% 0 0 100% /home
/dev/disk3s1 14Gi 9.3Gi 5.2Gi 65% 0 0 100% /Volumes/KINGSTON
2、了解 $2 的意义,$2 等于是每一行的第二个元素。
XX@MacPro ~ df -h |awk '{print $2}'
Size
1.0Ti
340Ki
1.0Ti
-hosts
auto_home
14Gi
3、awk命令中所有“动作”,都必须在 { } 内。
通常awk的命令格式是:awk '脚本’ 输入文件
再更进一步具体化:awk '模式 {动作}’ 输入文件
或者和其他命令组合:其他命令 | awk '模式 {动作}’
XX@MacPro ~ df -h |awk 'print $2'
awk: 命令行:1: print $2
awk: 命令行:1: ^ syntax error
4、awk命令匹配符合模式的行
✘ XX@MacPro ~ df -h |awk '/dev/'
/dev/disk2s1 1.0Ti 275Gi 759Gi 27% 1962828 9223372036852812979 0% /
devfs 340Ki 340Ki 0Bi 100% 1179 0 100% /dev
/dev/disk2s4 1.0Ti 2.0Gi 759Gi 1% 1 9223372036854775806 0% /private/var/vm
/dev/disk3s1 14Gi 9.3Gi 5.2Gi 65% 0 0 100% /Volumes/KINGSTON
注意:所有正则表达式都需要在/ /内,即:/正则表达式/,否则会如下图出错。
✘ XX@MacPro ~ df -h |awk '/dev'
awk: 命令行:1: /dev
awk: 命令行:1: ^ 未终止的正则表达式
注意:想要在规则中匹配“/”,需要进行转义。
XX@MacPro ~ df -h |awk '//dev/'
awk: 命令行:2: //dev/
awk: 命令行:2: ^ 未预期的新行或字符串结束
✘ XX@MacPro ~ df -h |awk '/\/dev/'
/dev/disk2s1 1.0Ti 275Gi 759Gi 27% 1962828 9223372036852812979 0% /
devfs 340Ki 340Ki 0Bi 100% 1179 0 100% /dev
/dev/disk2s4 1.0Ti 2.0Gi 759Gi 1% 1 9223372036854775806 0% /private/var/vm
/dev/disk3s1 14Gi 9.3Gi 5.2Gi 65% 0 0 100% /Volumes/KINGSTON
注意:awk命令的“模式”与“动作”都被包裹在一组单引号内不可用两组。否则错误如下:
XX@MacPro ~ df -h |awk '/m$/' '{print $1}'
awk: 致命错误:无法以读模式打开文件“{print $1}”(No such file or directory)
✘ XX@MacPro ~ df -h |awk '/m$/ {print $1}'
/dev/disk2s4
下面是在使用AWK命令的“范围模式”,开头匹配/dev/, 结束匹配/m$/。
XX@MacPro ~ df -h |awk '/dev/,/m$/ {print $1}'
/dev/disk2s1
devfs
/dev/disk2s4
/dev/disk3s1
5、AWK命令匹配多个模式条件。
注意:awk支持的逻辑表达式AND(&&),OR(||)等等。
XX@MacPro ~ df -h |awk '/dev/AND/m$/ {print $1}'
awk: 命令行:1: /dev/AND/m$/ {print $1}
awk: 命令行:1: ^ 未终止的正则表达式
✘ XX@MacPro ~ df -h |awk '/dev/&/m$/ {print $1}'
awk: 命令行:1: /dev/&/m$/ {print $1}
awk: 命令行:1: ^ syntax error
✘ XX@MacPro ~ df -h |awk '/dev&m$/ {print $1}'
XX@MacPro ~ df -h |awk '/dev|m$/ {print $1}'
/dev/disk2s1
devfs
/dev/disk2s4
/dev/disk3s1
XX@MacPro ~ df -h |awk '/dev&&m/ {print $1}'
XX@MacPro ~ df -h |awk '/dev/ {print $1}'
/dev/disk2s1
devfs
/dev/disk2s4
/dev/disk3s1
XX@MacPro ~ df -h |awk '/dev/&&/m$/ {print $1}'
/dev/disk2s4
XX@MacPro ~ df -h |awk '/dev/&&/m$/ '
/dev/disk2s4 1.0Ti 2.0Gi 759Gi 1% 1 9223372036854775806 0% /private/var/vm
6、连续多个动作的连接
1)使用连续连个多个{ }:{A动作} {B动作}。
2)使用在{ }内分号隔离:{A动作; B动作}。
XX@MacminiPro ~ df -h |awk '{print $1} {print $2}'
Filesystem
Size
/dev/disk2s1
1.0Ti
devfs
340Ki
/dev/disk2s4
1.0Ti
map
-hosts
map
auto_home
/dev/disk3s1
14Gi
XX@MacminiPro ~ df -h |awk '{print $1 ;print $2}'
Filesystem
Size
/dev/disk2s1
1.0Ti
devfs
340Ki
/dev/disk2s4
1.0Ti
map
-hosts
map
auto_home
/dev/disk3s1
14Gi
注意:END这个不理解下次继续更新。。
XX@MacminiPro ~ df -h |awk '{print $1} END {print $2}'
Filesystem
/dev/disk2s1
devfs
/dev/disk2s4
map
map
/dev/disk3s1
14Gi
网友评论