awk命令

awk是一个很优秀的处理文本中的行和列的工具。
Awk命令被Unix/Linux用户广泛用于文本处理文件。
它具有搜索关键字/字符串的功能。
还可以和regex表达式一起使用。

指定字段分隔符

awk命令默认的分割符是空格。

我们可以使用其他字符,比如分号(;)、冒号(:)、逗号(,)、制表符、空格等作为字段分隔符。
awk命令有一个–field-separator的选项。 简写是 -F

语法:

awk -F'separator' '{print $column-number-N}' /path/file-name

从/etc/passwd打印第1列、第6列和第7列。

awk -F':' '{print ,,}' /etc/passwd

输出如下:

root /root /bin/bash
bin /bin /sbin/nologin
daemon /sbin /sbin/nologin
adm /var/adm /sbin/nologin
lp /var/spool/lpd /sbin/nologin
使用awk处理文本文件

在Unix/Linux系统中,经常使用awk命令来处理有一定格式的文本信息中的列。

使用awk命令处理文本文件中的列

创建一个测试文件

[root@onitroad ~]# ls -l / > /tmp/test.txt
[root@onitroad ~]# cat /tmp/test.txt
total 20
lrwxrwxrwx.   1 root root    7 Sep 30 13:39 bin -> usr/bin
dr-xr-xr-x.   5 root root 4096 Sep 30 14:07 boot
drwxr-xr-x.  19 root root 3220 Sep 30 06:34 dev
drwxr-xr-x. 139 root root 8192 Sep 30 06:19 etc
drwxr-xr-x.   3 root root   18 Sep 30 14:02 home
lrwxrwxrwx.   1 root root    7 Sep 30 13:39 lib -> usr/lib
lrwxrwxrwx.   1 root root    9 Sep 30 13:39 lib64 -> usr/lib64
drwxr-xr-x.   2 root root    6 Apr 11  2018 media
drwxr-xr-x.   2 root root    6 Apr 11  2018 mnt
drwxr-xr-x.   3 root root   16 Sep 30 13:52 opt
dr-xr-xr-x. 219 root root    0 Sep 30 06:33 proc
dr-xr-x---.   6 root root  198 Sep 30 06:20 root
drwxr-xr-x.  42 root root 1260 Sep 30 06:37 run
lrwxrwxrwx.   1 root root    8 Sep 30 13:39 sbin -> usr/sbin
drwxr-xr-x.   2 root root    6 Apr 11  2018 srv
dr-xr-xr-x.  13 root root    0 Sep 30 06:34 sys
drwxrwxrwt.  19 root root 4096 Oct  1 02:51 tmp
drwxr-xr-x.  13 root root  155 Sep 30 13:39 usr
drwxr-xr-x.  20 root root  282 Sep 30 14:06 var

打印某一列

语法:

awk '{print $column-number}' /path/file-name

示例:打印第2列

awk '{print }' /tmp/test.txt

-F:表示使用冒号做分隔符

示例:打印第4列

awk '{print }' /tmp/test.txt

打印多列

打印多个列需要逗号(,)分隔多个列。

语法:

awk '{print $column-number1,$column-number2,$column-number-N'} /path/file-name

示例:打印第2列、第3列和第5列

awk '{print ,,}' /tmp/test.txt

输出如下:

20  
1 root 7
5 root 4096
19 root 3220
139 root 8192
3 root 18

使用awk命令打印整个文件

使用awk命令打印整个文件 类似于“cat file-name”`

语法

awk '{print ##代码##}' /path/filename

$0 匹配整行。

日期:2019-08-20 17:58:06 来源:oir作者:oir