自学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
【sed和awk总结】
sed擅长打印输出行 sed -n 1p /etc/passwd
awk擅长打印输出列 [root@ban ~]# awk -F ":" '{print $1}' /etc/passwd