自学linux指令分析-awk

自学linux指令分析-awk

 

1·命令格式

awk '{pattern + action}' {filenames}

awk     ‘{模式+行动}'         {文件名}

awk [-F field-separator(分隔符)] 'commands' input-file(s)

 

其中,commands 是真正awk命令,[-F域分隔符]是可选的。 input-file(s) 是待处理的文件。
在awk中,文件的每一行中,由域分隔符分开的每一项称为一个域。通常,在不指名-F域分隔符的情况下,默认的域分隔符是空格。


2·命令参数

$o                               代表整列

$1                              代表第一列

 

3、命令功能

擅长列处理

 

4、命令范列

        实列一:已知文件test.txt内容为:

        Test

         liyao

         oldboy

         请给出打印test.txt内容时,不包含oldboy字符串的命令

命令一:awk /[^oldboy]/ test.txt      排除以oldboy开头的行

[root@ban tmp]# awk /[^oldboy]/ test.txt
test
liyao
[root@ban tmp]# awk /^oldboy/ test.txt
oldboy
[root@ban

 

      实例二:只查看额ett.txt文件(100行)内第20行到第30行的内容

命令一:awk '{if(NR>19&&NR<31) print $0}' ett.txt 

awk '{if()}'                                                

awk '{}'基本书写格式                                   

if是判断                                                

NR是里面的变量,表示行号                               

&&并且                                                      

$0打出完整

其中NR是行号,$0表示所有行内容(如果只输出第一列就是$1,第二列就是$2……所有行就是$0),

所以该命令就是先筛选出ett.txt文件内行号大于19而且行号小于31的所有行,然后输出整行

[root@ban ~]# awk '{if(NR>19&&NR<31) print $0}' ett.txt
20
21
22
23
24
25
26
27
28
29
30

[root@ban ~]# cat /etc/passwd  系统用户和密码所在文件

[root@ban ~]# awk -F ":" '{print $1}' /etc/passwd 

用:分开将/etc/passwd中的第一列打印出来

 [root@ban ~]# awk '{if(NR==19) print $0}' ett.txt  显示第19行,单独显示固定的某一行需要加==号

19

sedawk总结】

sed擅长打印输出行  sed -n 1p /etc/passwd

awk擅长打印输出列  [root@ban ~]# awk -F ":" '{print $1}' /etc/passwd

posted @ 2017-04-12 14:19  极光无影_烽  阅读(158)  评论(0编辑  收藏  举报