我使用awk命令时,用的次数最多的是从stdin或文件里选取几列输出。 awk的print语句:print:输出当前行整行。print0:功能与print相同,输出当前行整行。print1:输出当前行的第1列(字段)。print2:输出当前行的第2列(字段)。printN:输出当前行的第N列(字段)。print1,2:输出当前行的第1列和第2列,每列之间以一个分隔符分隔开,默认的分隔符为空格。例子1:ps和awk组合输出psaux的标题行roothgdm:lsdatapsauxheadn1USERPIDCPUMEMVSZRSSTTYSTATSTARTTIMECOMMANDgrepvCPU过滤掉含CPU的全部行(即:标题行)awk选取第1列、第2列、第3列、第4列输出sortk3r按输入的第3列降序排序roothgdm:lsdatapsauxgrepvCPUawk{print1,2,3,4}sortk3rheadn10root6598902。30。8mysql9947220。56。9helper11178250。40。6helper11177600。40。6helper11177300。40。6helper11178040。30。7helper11178320。30。6helper11178140。30。6helper11178110。30。6helper11178070。30。6 很久之前,在pythoncelery文档里见过下面的这个命令,正是因为当时看不懂这个命令,才开始浅学awk和xargs。psauxwwgrepceleryworkergrepvgrepawk{print2}xargskill9例子2:ls和awk组合发现lsl输出的第一行不是想要的roothgdm:lsdatalsltotal24drwxrxrx2rootroot4096Apr414:10dir1drwxrxrx2rootroot4096Apr414:10dir2drwxrxrx2rootroot4096Apr414:10dir3rwrr1rootroot74Apr414:30file1。txtrwrr1rootroot74Apr414:31file2。txtrwrr1rootroot74Apr414:33file3。txt过滤掉lsl输出的第一行roothgdm:lsdatalslgrepvtotaldrwxrxrx2rootroot4096Apr414:10dir1drwxrxrx2rootroot4096Apr414:10dir2drwxrxrx2rootroot4096Apr414:10dir3rwrr1rootroot74Apr414:30file1。txtrwrr1rootroot74Apr414:31file2。txtrwrr1rootroot74Apr414:33file3。txt选取输出每行的第1个字段、第9个字段、第3个字段、第4个字段roothgdm:lsdatalslgrepvtotalawk{print权限1,名称9,属主3,属组4}权限drwxrxrx名称dir1属主root属组root权限drwxrxrx名称dir2属主root属组root权限drwxrxrx名称dir3属主root属组root权限rwrr名称file1。txt属主root属组root权限rwrr名称file2。txt属主root属组root权限rwrr名称file3。txt属主root属组root ls和awk组合