正则表达式awk
以冒号: 为分隔符打印出来;打印第一段$1; -F 分隔符
[root@localhost awk]# awk -F ':' '{print $1}' test.txt
root
bin
daemon
adm
lp
sync
打印所有的段$0
[root@localhost awk]# awk -F ':' '{print $0}' test.txt
打印出文件内容:
[root@localhost awk]# awk '{print $0}' test.txt
以空格分开,打印出第一段
[root@localhost awk]# cat 1.txt
adossad dshj
sds
2323 89809
dsadsd
[root@localhost awk]# awk '{print $1}' 1.txt
adossad
sds
2323
dsadsd
打印出多个段,以冒号:分开,打印出第一段$1,第二段$2,第三段$3
[root@localhost awk]# awk -F ':' '{print $1,$2,$3}' test.txt
root x 0
bin x 1
daemon x 2
adm x 3
lp x 4
多段显示以井号分开显示:
[root@localhost awk]# awk -F ':' '{print $1"#",$2"#",$3"#"}' test.txt
root# x# 0#
bin# x# 1#
daemon# x# 2#
adm# x# 3#
lp# x# 4#
sync# x# 5#
匹配并列出oo字符串的行
[root@localhost awk]# awk '/oo/' test.txt
root:x:0:0:root:/root:/bin/bash
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
匹配第一段,oo字符串,
[root@localhost awk]# awk -F ':' '$1~ /oo/' test.txt
root:x:0:0:root:/root:/bin/bash
同样awk也支持正则表达式
匹配以冒号分割的第一段 有o+的字符串 加号表示一个或多个字符
[root@localhost awk]# awk -F ':' '$1 ~ /o+/' test.txt
root:x:0:0:root:/root:/bin/bash
daemon:x:2:2:daemon:/sbin:/sbin/nologin
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
operator:x:11:0:operator:/root:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
polkitd:x:999:997:User for polkitd:/:/sbin/nologin
匹配第一段和第三段 (以冒号分割)有root字符串的 以及匹配第一段第三段和第四段有xiaobo字符串的
[root@localhost awk]# awk -F ':' '/root/ {print $1,$3} /xiaobo/ {print $1,$3,$4}' test.txt
root 0
operator 11
xiaobo 1000 1000
打印输出包含root 和xiaobo字符串的全部段行
[root@localhost awk]# awk -F ':' '/root|xiaobo/ {print $0}' test.txt
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
xiaobo:x:1000:1000::/home/xiaobo:/bin/bash
grep 查找root和xiaobo字符串的行
[root@localhost awk]# grep -E 'root|xiaobo' test.txt
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
xiaobo:x:1000:1000::/home/xiaobo:/bin/bash
以冒号分割,打印第三段式是0的行
[root@localhost awk]# awk -F ':' '$3==0' test.txt
root:x:0:0:root:/root:/bin/bash
第三段是0,只打印第一段
[root@localhost awk]# awk -F ':' '$3==0 {print $1}' test.txt
root
打印第三段>=1000的行
[root@localhost awk]# awk -F ':' '$3>=1000' test.txt
xiaobo:x:1000:1000::/home/xiaobo:/bin/bash
打印全部$0
[root@localhost awk]# awk -F ':' '$3>=1000 {print $0}' test.txt
xiaobo:x:1000:1000::/home/xiaobo:/bin/bash
打印第7段不是/sbin/nologin的字符串
[root@localhost awk]# awk -F ':' '$7!="/sbin/nologin" {print $0}' test.txt
root:x:0:0:root:/root:/bin/bash
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
xiaobo:x:1000:1000::/home/xiaobo:/bin/bash
打印出第三段<第四段的行
[root@localhost awk]# awk -F ':' '$3<$4' test.txt
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
第三段等于第四段的行
[root@localhost awk]# awk -F ':' '$3==$4' test.txt
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
xiaobo:x:1000:1000::/home/xiaobo:/bin/bash
打印第三段大于5 并且第四段小于7
[root@localhost awk]# awk -F ':' '$3>"5"&&$4<"7"' test.txt
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
打印第三段>1000 或者 第7段等于/sbin/nologin
[root@localhost awk]# awk -F ':' '$3>1000||$7=="/sbin/nologin"' test.txt
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
打印输出底三段大于1000 或者第7段 匹配/bash/字符的
[root@localhost awk]# awk -F ':' '$3>1000||$7 ~/bash/' test.txt
root:x:0:0:root:/root:/bin/bash
xiaobo:x:1000:1000::/home/xiaobo:/bin/bash
以#号分开,打印输出第3段>1000 或者第7段匹配/bash/的段,并输出第1段第3段第7段
[root@localhost awk]# awk -F ':' '{OFS="#"} $3>1000 || $7 ~ /bash/ {print $1,$3,$7}' test.txt
root#0#/bin/bash
xiaobo#1000#/bin/bash
if 第3段大于等于1000 打印第1,2,3,4段,以#号分割; OFS表示分割符
[root@localhost awk]# awk -F ':' '{OFS="#"} {if ($3>=1000) {print $1,$2,$3,$4}}' test.txt
xiaobo#x#1000#1000
OFS是print的时候,打印指定的分隔符;
NR 表示行;
NF表示段;
打印所有的行
[root@localhost awk]# awk -F ':' '{print NR ":"$0}' test.txt
1:root:x:0:0:root:/root:/bin/bash
2:bin:x:1:1:bin:/bin:/sbin/nologin
3:daemon:x:2:2:daemon:/sbin:/sbin/nologin
4:adm:x:3:4:adm:/var/adm:/sbin/nologin
打印所有的段,就是以冒号分开,一行有多少段,前面的数字表示改行有几段
[root@localhost awk]# awk -F ':' '{print NF ":"$0}' test.txt
7:root:x:0:0:root:/root:/bin/bash
7:bin:x:1:1:bin:/bin:/sbin/nologin
7:daemon:x:2:2:daemon:/sbin:/sbin/nologin
7:adm:x:3:4:adm:/var/adm:/sbin/nologin
7:lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
7:sync:x:5:0:sync:/sbin:/bin/sync
7:shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
7:halt:x:7:0:halt:/sbin:/sbin/halt
7:mail:x:
8:12:mail:/var/spool/mail:/sbin/nologin
打印前10行
[root@localhost awk]# awk -F ':' 'NR<=10' test.txt
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
NR<=10打印前10行并且 $1第一段包含root字符或者sync字符的行
[root@localhost awk]# awk -F ':' 'NR<=10 && $1 ~ /root|sync/' test.txt
root:x:0:0:root:/root:/bin/bash
sync:x:5:0:sync:/sbin:/bin/sync
打印一行中有7段并且$1第一段包含root或者sync字符的行
[root@localhost awk]# awk -F ':' 'NF==7 && $1 ~ /root|sync/' test.txt
root:x:0:0:root:/root:/bin/bash
sync:x:5:0:sync:/sbin:/bin/sync
打印行和段;$NR这里理解为段,$NF一直是第7段
第1段第7段
第2段第7段
....
....($NR没东西了)第7段
[root@localhost awk]# awk -F ':' '{print $NR ":" $NF}' test.txt
root:/bin/bash
x:/sbin/nologin
2:/sbin/nologin
4:/sbin/nologin
lp:/sbin/nologin
/sbin:/bin/sync
/sbin/shutdown:/sbin/shutdown
:/sbin/halt
:/sbin/nologin
:/sbin/nologin
:/sbin/nologin
:/sbin/nologin
:/sbin/nologin
:/sbin/nologin
:/sbin/nologin
:/sbin/nologin
:/sbin/nologin
:/sbin/nologin
:/sbin/nologin
:/bin/bash
将前三行第一段全部赋值为root
[root@localhost awk]# head -n 3 /etc/passwd |awk -F ':' '$1="root"'
root x 0 0 root /root /bin/bash
root x 1 1 bin /bin /sbin/nologin
root x 2 2 daemon /sbin /sbin/nologin
列出前三行有root字符串的行
[root@localhost awk]# head -n 3 /etc/passwd |awk -F ':' '$1=="root"'
root:x:0:0:root:/root:/bin/bash
赋值的时候分隔符会没有,就可以定义一个分隔符 {OFS ":"}
[root@localhost awk]# head -n 3 test.txt |awk -F ':' '{OFS ":"}''$1=="root"'
root:x:0:0:root:/root:/bin/bash
求文件test.txt每一行第三段所有的和 (第三段是一个数字) 以冒号分割,第三段
[root@localhost awk]# awk -F ':' '{(tot=tot+$3)}; END {print tot}' test.txt
3605
正则表达式awk的更多相关文章
- 正则表达式awk学习(三)
awk:格式化文本输出 gawk - pattern scanning and processing language awk:gawk的符号链接 基本用法:gawk [options] 'progr ...
- Sed、Awk单行脚本快速参考
文本间隔: # 在每一行后面增加一空行 sed G awk '{printf("%s\n\n",$0)}' # 将原来的所有空行删除并在每一行后面增加一空行. # 这样在输出的文本 ...
- awk用法总结笔记
+ : 匹配1或多次出现的字符或正则表达式 awk '/col+/' testfile ? : 匹配0或1次出现的字符或正则表达式 awk '/col+/' testfile | : 匹 ...
- 【linux】三十分钟学会AWK
本文大部分内容翻译自我开始学习AWK时看到的一篇英文文章 AWK Tutorial ,觉得对AWK入门非常有帮助,所以对其进行了粗略的翻译,并对其中部分内容进行了删减或者补充,希望能为对AWK感兴趣的 ...
- awk 手册--【转载】
1. 前言 有关本手册 : 这是一本awk学习指引, 其重点着重于 : l awk 适于解决哪些问题 ? l awk 常见的解题模式为何 ? 为使读者快速掌握awk解 ...
- AWK处理日志入门(转)
前言 这两天自己挽起袖子处理日志,终于把AWK给入门了.其实AWK的基本使用,学起来也就半天的时间,之前总是靠同事代劳,惰性呀. 此文仅为菜鸟入门,运维们请勿围观. 下面是被处理的日志的示例,不那么标 ...
- [shell基础]——awk命令
关于awk awk是一个强大的文本分析工具,相对于grep的查找.sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大. 简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开 ...
- awk中文手册
1. 前言 有关本手册 : 这是一本awk学习指引, 其重点着重于 : l awk 适于解决哪些问题 ? l awk 常见的解题模式为何 ? 为使读者快速掌握awk解题的模 ...
- 见过的最好AWK手册
原文: http://linuxfire.com.cn/~lily/awk.html 简体中文版由bones7456 (http://li2z.cn)整理. 原文:应该是 http://phi.sin ...
随机推荐
- maven relativePath
父项目的pom.xml文件的相对路径.默认值为../pom.xml.maven首先从当前构建项目开始查找父项目的pom文件,然后从本地仓库,最有从远程仓库.RelativePath允许你选择一个不同的 ...
- django配置数据库
配置数据库 Django默认使用SQLite数据库 在settings.py文件中通过DATABASES选项进行数据库配置 配置MySQL Python3.x中安装的是PyMySQL 在__init_ ...
- poj1753(位运算压缩状态+bfs)
题意:有个4*4的棋盘,上面摆着黑棋和白旗,b代表黑棋,w代表白棋,现在有一种操作,如果你想要改变某一个棋子的颜色,那么它周围(前后左右)棋子的颜色都会被改变(白变成黑,黑变成白),问你将所有棋子变成 ...
- 算法篇---java算法应用
算法应用之百钱买白鸡 案列说明:主要内容是:公鸡5元一只,母鸡3元一只,小鸡1元三只,问100元怎样可以买100鸡? 思想:想要实现此算法,只要明白各种条件的关系即可,而且知道公鸡最多买20只,母鸡最 ...
- Linux下高并发socket最大连接数所受的各种限制(转)
1.修改用户进程可打开文件数限制在Linux平台上,无论编写客户端程序还是服务端程序,在进行高并发TCP连接处理时,最高的并发数量都要受到系统对用户单一进程同时可打开文件数量的限制(这是因为系统为每个 ...
- ArrayList, Vector和CopyOnWriteArrayList对比学习
ArrayList线程不安全的例子 线程安全就是多线程访问时,采用加锁机制,当一个线程访问该类的某个数据时,进行保护,其他线程不能进行访问直到该线程读取完,其他线程才可使用.不会出现数据不一致或者数据 ...
- Face Alignment by Coarse-to-Fine Shape Searching--解析
人脸关键点定位.Face Alignment by Coarse-to-Fine Shape Searching 算法源码详解(上) http://blog.csdn.net/shenxiaolu19 ...
- C#内置泛型委托:Action委托
1.什么是Action泛型委托 Action<T>是.NET Framework内置的泛型委托,可以使用Action<T>委托以参数形式传递方法,而不用显示声明自定义的委托.封 ...
- Scrapy 导出的 cvs 文件,双击打开乱码问题
默认可能是utf8格式,在excel的不要直接打开,而是在excel - 数据 -导入里打开,或者打开前用vscode之类的保存为GBK编码
- jQuery&CSS 顶部和底部固定浮动工具栏 兼容IE6
http://www.cnblogs.com/lhj588/archive/2013/04/02/2994639.html —————————————————————————————————————— ...