linux命令 awk
2016-02-29 16:33
585 查看
awk的工作流程如下:
读入有 '\n' 换行符分割的一跳记录,然后将记录按指定的域分隔划分域,填充域,$0 表示所有域, $1 表示第一个域, $n 表示第n个域。默认域分隔符为“空白键”或者“[tab]键”。
例如:
hbg@root:/$ last -n 5
yyy pts/5 192.168.1.221 Mon Feb 29 16:07 still logged in
mmm pts/4 192.168.2.201 Mon Feb 29 14:22 still logged in
zzz pts/3 192.168.1.221 Mon Feb 29 14:00 still logged in
ttt pts/2 192.168.2.201 Mon Feb 29 13:39 still logged in
mmm pts/0 192.168.2.201 Mon Feb 29 13:38 still logged in
hbg@root:/$ last -n 5 | awk '{print $0}'
yyy pts/5 192.168.1.221 Mon Feb 29 16:07 still logged in
mmm pts/4 192.168.2.201 Mon Feb 29 14:22 still logged in
zzz pts/3 192.168.1.221 Mon Feb 29 14:00 still logged in
ttt pts/2 192.168.2.201 Mon Feb 29 13:39 still logged in
mmm pts/0 192.168.2.201 Mon Feb 29 13:38 still logged in
hbg@root:/$ last -n 5 | awk '{print $1}'
yyy
mmm
zzz
ttt
mmm
hbg@root:/$ last -n 5 | awk '{print $2}'
pts/5
pts/4
pts/3
pts/2
pts/0
-F 参数可以指定域分隔符“:”。
hbg@root:/$ cat etc/passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
hbg@root:/$ cat etc/passwd | awk -F ':' '{print $1}'
root
daemon
bin
sys
sync
关键字 BEGIN 先执行BEGIN,然后读取文件读入有\n换行符分隔的一条记录,然后将记录按指定的域分隔符划分域,填充域。最后执行END。
awk中提供了 print 和 printf两种打印输出函数。
其中print函数的参数可以是变量、数值或者字符串。字符串必须使用双引号引用,参数用逗号分隔,如果没有逗号,参数就串联在一起而无法区分。这里逗号的作用与输出文件的分隔符的作用是一样的,只是后者是空格而已。
printf函数,其用法和 C语言中printf基本相似,可以格式化字符串,输出复杂时,printf更好用,代码更容易懂。
读入有 '\n' 换行符分割的一跳记录,然后将记录按指定的域分隔划分域,填充域,$0 表示所有域, $1 表示第一个域, $n 表示第n个域。默认域分隔符为“空白键”或者“[tab]键”。
例如:
hbg@root:/$ last -n 5
yyy pts/5 192.168.1.221 Mon Feb 29 16:07 still logged in
mmm pts/4 192.168.2.201 Mon Feb 29 14:22 still logged in
zzz pts/3 192.168.1.221 Mon Feb 29 14:00 still logged in
ttt pts/2 192.168.2.201 Mon Feb 29 13:39 still logged in
mmm pts/0 192.168.2.201 Mon Feb 29 13:38 still logged in
hbg@root:/$ last -n 5 | awk '{print $0}'
yyy pts/5 192.168.1.221 Mon Feb 29 16:07 still logged in
mmm pts/4 192.168.2.201 Mon Feb 29 14:22 still logged in
zzz pts/3 192.168.1.221 Mon Feb 29 14:00 still logged in
ttt pts/2 192.168.2.201 Mon Feb 29 13:39 still logged in
mmm pts/0 192.168.2.201 Mon Feb 29 13:38 still logged in
hbg@root:/$ last -n 5 | awk '{print $1}'
yyy
mmm
zzz
ttt
mmm
hbg@root:/$ last -n 5 | awk '{print $2}'
pts/5
pts/4
pts/3
pts/2
pts/0
-F 参数可以指定域分隔符“:”。
hbg@root:/$ cat etc/passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
hbg@root:/$ cat etc/passwd | awk -F ':' '{print $1}'
root
daemon
bin
sys
sync
关键字 BEGIN 先执行BEGIN,然后读取文件读入有\n换行符分隔的一条记录,然后将记录按指定的域分隔符划分域,填充域。最后执行END。
awk中提供了 print 和 printf两种打印输出函数。
其中print函数的参数可以是变量、数值或者字符串。字符串必须使用双引号引用,参数用逗号分隔,如果没有逗号,参数就串联在一起而无法区分。这里逗号的作用与输出文件的分隔符的作用是一样的,只是后者是空格而已。
printf函数,其用法和 C语言中printf基本相似,可以格式化字符串,输出复杂时,printf更好用,代码更容易懂。
相关文章推荐
- Linux一键安装web环境全攻略(阿里云服务器)
- CentOS上配置hls流系统安装FFMPEG出错处理
- rsyslogd-学习&使用
- 基于linux3.0内核fl2440开发板下的gps数据采集与处理
- How to use logrotate to manage log files in linux(如何在Linux中使用logrotate去管理日志文件)
- cmake 与 make
- Linux下SSH免密码登录
- centos7下安装code::blocks
- Linux文件存储结构,包括目录项、inode、数据块
- linux 设置计划任务
- ld-linux.so.2的解决方法
- linux下如何修改DNS地址
- Linux上下行网速测试工具_speedtest-cli
- 怎么查看编译的Linux内核源代码的版本信息
- 转:Linux下which、whereis、locate、find 命令的区别
- linux c 进程间通信实例代码总结
- Linux 内存 buffer 和 cache 的区别
- linux编译
- Linux入门(四)系统管理
- Linux x64(centos 7)上c语言函数参数入栈问题