## 6-3 9 awk 原

阿想

9.6/9.7 awk

``````awk '{print \$1}' 1.txt  \\输出第一列
awk -F ':' '{print \$1,\$3,\$5}' test.txt \\指定分隔符：输出1,3,5列
awk -F ':' '{print \$1"#"\$3"#"\$5}' test.txt
awk '/oo/' test.txt
awk -F ':' "\$1 ~ /oo/' test.txt
awk -F ':' '\$1 ~ /oo+/' test.txt
awk -F ':' '\$1 ~ /o+/' test.txt
awk -F ':' '/root/ {print \$1,\$3} /user/ {print \$3,\$4}' test.txt
awk -F ':' '/root/ {print \$1,\$3} /user/ {print \$1,\$3,\$4}' test.txt
awk -F ':' '\$3==0' test.txt
awk -F ':' '\$3>=1000 {print \$0}' test.txt
awk -F ':' '\$7!="/sbin/nologin" {print \$0}' test.txt
``````

eg

``````root@lixiang01:~# awk -F ':' '{print \$1,\$3,\$5}' test.txt | head -2
root 0 root
bin 1 bin
``````

awk -F 指定分隔符 print中的都好打印为空格,其他分隔符不变

``````root@lixiang01:~# awk -F ':' '{print \$1"#"\$3"#"\$5}' test.txt | head -2
root#0#root
bin#1#bin
``````

awk的正则匹配与sed的类似

``````root@lixiang01:~# awk '/oo/' test.txt
root:x:0:0:root:/root:/bin/bash
``````
``````root@lixiang01:~# awk -F ':' '\$1 ~ /oo/' test.txt
root:x:0:0:root:/root:/bin/bash
``````
``````root@lixiang01:~# awk -F ':' '\$1 ~ /o+/' test.txt |head -2
root:x:0:0:root:/root:/bin/bash
``````

awk匹配可以多次执行

``````root@lixiang01:~# awk -F ':' '/root/ {print \$1,\$3} /user/ {print \$1,\$3,\$4}' test.txt
root 0
operator 11
tss 59 59
user1 1001 1001
user2 1002 1006
user3 1004 1005
root@lixiang01:~# grep -E 'root|user' test.txt
``````
``````root:x:0:0:root:/root:/bin/bash
tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
user1:x:1001:1001::/home/user1:/bin/bash
user2:x:1002:1006::/home/user2:/bin/bash
user3:x:1004:1005::/home/user3:/bin/bash
``````

awk的匹配可以使用“|”用为或者，｛print \$0｝为默认输出，可省

``````root@lixiang01:~# awk -F ':' '/root|user/ {print \$0}' test.txt
root:x:0:0:root:/root:/bin/bash
tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
user1:x:1001:1001::/home/user1:/bin/bash
user2:x:1002:1006::/home/user2:/bin/bash
user3:x:1004:1005::/home/user3:/bin/bash
``````

``````root@lixiang01:~# awk -F ':' '\$3>=1000' test.txt
lixiang:x:1000:1000::/home/lixiang:/bin/bash
user1:x:1001:1001::/home/user1:/bin/bash
user2:x:1002:1006::/home/user2:/bin/bash
user3:x:1004:1005::/home/user3:/bin/bash
axiang:x:1010:1011::/home/axiang:/bin/bash
root@lixiang01:~# awk -F ':' '\$3>="1000"' test.txt | head -3
``````
``````root@lixiang01:~# awk -F ':' '\$7!="/bin/bash"' test.txt

sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
``````

### 阿想

awk实例（持续更新）

1、显示第几列到第几列。 显示第3至第5列 awk '{for(i=3;i<=5;i++) printf \$i""FS;print ""}' file 显示第3列至最后一列 awk '{for(i=3;i<=NF;i++) printf \$i""FS;print ""}' file 扩展: fin......

net881004
2017/12/24
0
0
linux笔记（28）sed和awk的联系及拓展

sed练习题 把/etc/passwd 复制到/root/test.txt，用sed打印所有行 [root@localhost sed]# sed -n '1,\$p' passwd 打印test.txt的3到10行 [root@localhost sed]# sed -n '3,10'p passwd 打印t......

2017/11/25
0
0
awk命令学习

awk是行处理器: 相比较屏幕处理的优点，在处理庞大文件时不会出现内存溢出或是处理缓慢的问题，通常用来格式化文本信息 awk处理过程: 依次对每一行进行处理，然后输出 awk命令形式: awk [-F...

2017/06/15
0
0
AWK处理数组

2017/12/04
0
0
Shell脚本之awk文本编辑器语法（二）

Shell脚本之awk文本编辑器语法（二） ---------------------------------- 流程控制 分支结构 (一) if (条件) 动作 if (条件) {动作1;动作2} 如： # awk -F: '{if (\$1 == "root")print \$1}' ...

wuwei5460
2013/01/13
0
0

OSChina 周六乱弹 —— 你一口我一口多咬一口是小狗

Osc乱弹歌单（2018）请戳（这里） 【今日歌曲】 @达尔文 ：分享Roy Orbison的单曲《She's a Mystery to Me》 《She's a Mystery to Me》- Roy Orbison 手机党少年们想听歌，请使劲儿戳（这里...

46
4
Spring源码学习笔记-1-Resource

zypy333

12
0
RestClientUtil和ConfigRestClientUtil区别说明

RestClientUtil directly executes the DSL defined in the code. ConfigRestClientUtil gets the DSL defined in the configuration file by the DSL name and executes it. RestClientUtil......

bboss

19
0

4
0
Linux系统设置全局的默认网络代理

13
0