以冒号: 为分隔符打印出来;打印第一段$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的更多相关文章

  1. 正则表达式awk学习(三)

    awk:格式化文本输出 gawk - pattern scanning and processing language awk:gawk的符号链接 基本用法:gawk [options] 'progr ...

  2. Sed、Awk单行脚本快速参考

    文本间隔: # 在每一行后面增加一空行 sed G awk '{printf("%s\n\n",$0)}' # 将原来的所有空行删除并在每一行后面增加一空行. # 这样在输出的文本 ...

  3. awk用法总结笔记

    +  : 匹配1或多次出现的字符或正则表达式  awk '/col+/' testfile ?  : 匹配0或1次出现的字符或正则表达式    awk '/col+/' testfile |  : 匹 ...

  4. 【linux】三十分钟学会AWK

    本文大部分内容翻译自我开始学习AWK时看到的一篇英文文章 AWK Tutorial ,觉得对AWK入门非常有帮助,所以对其进行了粗略的翻译,并对其中部分内容进行了删减或者补充,希望能为对AWK感兴趣的 ...

  5. awk 手册--【转载】

    1. 前言 有关本手册 : 这是一本awk学习指引,  其重点着重于 : l         awk 适于解决哪些问题 ? l         awk 常见的解题模式为何 ? 为使读者快速掌握awk解 ...

  6. AWK处理日志入门(转)

    前言 这两天自己挽起袖子处理日志,终于把AWK给入门了.其实AWK的基本使用,学起来也就半天的时间,之前总是靠同事代劳,惰性呀. 此文仅为菜鸟入门,运维们请勿围观. 下面是被处理的日志的示例,不那么标 ...

  7. [shell基础]——awk命令

    关于awk awk是一个强大的文本分析工具,相对于grep的查找.sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大. 简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开 ...

  8. awk中文手册

    1. 前言 有关本手册 : 这是一本awk学习指引, 其重点着重于 : l        awk 适于解决哪些问题 ? l        awk 常见的解题模式为何 ? 为使读者快速掌握awk解题的模 ...

  9. 见过的最好AWK手册

    原文: http://linuxfire.com.cn/~lily/awk.html 简体中文版由bones7456 (http://li2z.cn)整理. 原文:应该是 http://phi.sin ...

随机推荐

  1. Node.js学习笔记(1)--一个最简单的服务器请求

    说明(2017-5-2 10:27:03): 1. 需要安装node,http://nodejs.cn/download/ 2. 安装完后,在cmd里输入node -v可以查看版本. 3. 代码foo ...

  2. [转]java中参数" ..."的用法和意思

    原文地址:https://blog.csdn.net/lycit/article/details/78809625 如这个jdbc中封装的绑定参数的方法: /** * 绑定参数 * @param ps ...

  3. Creating a Physical Standby Database 11g

    1.Environment Item Primary database standby database Platform Redhat 5.4 Redhat 5.4 Hostname gc1 gc2 ...

  4. 【Android开源项目分析】自定义圆形头像CircleImageView的使用和源码分析

    原文地址: http://blog.csdn.net/zhoubin1992/article/details/47258639 效果

  5. Android——indexof()

    Java中字符串中子串的查找共有四种方法(indexof()) Java中字符串中子串的查找共有四种方法,如下:1.int indexOf(String str) :返回第一次出现的指定子字符串在此字 ...

  6. VC中使用ADO操作数据库的方法 SQL2000

    (1).引入ADO类 #import "c:\program files\common files\system\ado\msado15.dll" \ no_namespace \ ...

  7. hbase源码系列(五)Trie单词查找树

    在上一章中提到了编码压缩,讲了一个简单的DataBlockEncoding.PREFIX算法,它用的是前序编码压缩的算法,它搜索到时候,是全扫描的方式搜索的,如此一来,搜索效率实在是不敢恭维,所以在h ...

  8. 根据时间获取最新数据 SQL(每一个人或者每一项)

    -- 方法1 select a.* from table1 a from table1 b where b.name=a.name and b.gdtime>a.gdtime) -- 方法2 s ...

  9. PCL行人检测

    首先我们知道Hog特征结合SVM分类器已经被广泛应用于图像识别中,尤其在行人检测中获得了极大的成功,HOG+SVM进行行人检测的方法是法国研究人员Dalal在2005的CVPR上提出的,而如今虽然有很 ...

  10. Android Studio apk 打包

    1.Build -> Generate Signed APK...,打开如下窗口 2.假设这里没有打过apk包,点击Create new,窗口如下 这里只要输入几个必要项 Key store p ...