博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
linux awk命令
阅读量:6676 次
发布时间:2019-06-25

本文共 1015 字,大约阅读时间需要 3 分钟。

hot3.png

    awk是一个数据处理工具。与sed处理整行数据相比。awk则比较倾向将一行分成数个“字段”来处理。

    awk通常运行的格式是这样的:

    awk '条件类型1 {动作1} 条件类型2 {动作2} ...' filename

    变量名的含义

    NR:当前的行号

    NF:当前行的字段总数

    FS:目前的分隔符,默认是空格

lhj@lhj-virtual-machine:~$ last -n 5|awk '{print $1 "\t"  $2}'

    结果:

lhj	pts/0lhj	tty7(unknown	tty7reboot	systemlhj	tty7

lhj@lhj-virtual-machine:~$ cat /etc/passwd|awk '(FS=":")    {if($3<10){print $1 "\t" $3 }}'或者lhj@lhj-virtual-machine:~$ cat /etc/passwd|awk -F":" '{if($3<10){print $1 "\t" $3}}'

    第一条命令的结果:

root:x:0:0:root:/root:/bin/bash	daemon	1bin	2sys	3sync	4games	5man	6lp	7mail	8news	9

 第二条命令的结果:

root	0daemon	1bin	2sys	3sync	4games	5man	6lp	7mail	8news	9

    第一条命令的FS是域分隔符,读第一行的时候分隔符还是默认的空格,其作用是从第二行开始生效。不过可以在FS前面增加BEGIN关键字,告诉awk要从第一行开始生效

lhj@lhj-virtual-machine:~$ cat /etc/passwd|awk 'BEGIN {FS=":"}    {if($3<10){print $1 "\t" $3 }}'root	0daemon	1bin	2sys	3sync	4games	5man	6lp	7mail	8news	9

  awk还可以做列的运算,例如

lhj@lhj-virtual-machine:~$ cat /etc/passwd|awk 'BEGIN {FS=":"}    {if($3<10){s+=$3}} END {print s}'45

转载于:https://my.oschina.net/u/1053706/blog/228676

你可能感兴趣的文章
我的软件工程课目标
查看>>
var a={n:1}; var b=a; a.x=a={n:2}; console.log(a.x); console.log(b.x);
查看>>
【HDOJ】3016 Man Down
查看>>
window.open打开新页面,并将本页数据用过url传递到打开的页面;需要两个页面;...
查看>>
查看本机IP分为两种情况:
查看>>
Scala进阶之路-Scala特征类与unapply反向抽取
查看>>
洛谷P3057 [USACO12NOV]远处的牧场Distant Pastures
查看>>
hdu3415 Max Sum of Max-K-sub-sequence 单调队列
查看>>
6421B Lab2 DHCP的配置及故障排除
查看>>
[C# 基础知识梳理系列]专题一:深入解析委托——C#中为什么要引入委托
查看>>
FOSCommentBundle功能包:其它添加评论到页面的方法
查看>>
SQL Server 2012笔记分享-17:理解并设置文件表(FileTable)
查看>>
MongoDB运行状态、性能监控与分析
查看>>
Exchange 2016共享邮箱不保存已发送邮件的问题
查看>>
[C#基础知识系列]全面解析C#中静态与非静态
查看>>
SQL Server 2012笔记分享-40:自动维护索引
查看>>
C/C++各种系统开发环境搭建
查看>>
dwz navtab 限制打开数量实例
查看>>
Linq技术四:动态Linq技术 -- Linq.Expressions
查看>>
ARC __bridge modifiers demystified
查看>>