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

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

  AWK是一个优良的文本处理工具,Linux及Unix环境中现有的功能最强大的数据处理引擎之一。这种编程及数据操作语言(其名称得自于它的创始人阿尔佛雷德·艾侯、彼得·温伯格和布莱恩·柯林汉姓氏的首个字母)的最大功能取决于一个人所拥有的知识。awk经过改进生成的新的版本nawk,gawk,现在默认linux系统下日常使用的是gawk,用命令可以查看正在应用的awk的来源(ls -l /bin/awk )。擅长取列,可以过滤内容,特长:取列。默认以空格为分隔符。  

  $NF:表示最后一列。$(NF-1):倒数第二列。

 

  $0:表示整行。

 

  NR:表示行号。

 

  &&(and):表示并且。

 

  \n:回车换行。

 

  简单例子: 

  [root@saltstack-client2 test]# cat awk.txt 

  oldboy oldgirl 

  ddd fff

 

  [root@saltstack-client2 test]# awk '{print $1}' awk.txt 

  oldboy 

  ddd 

 

  [root@saltstack-client2 test]# awk '{print $2}' awk.txt 

  oldgirl 

  fff  

  例子: 

  打印/etc/passwd第一列的内容 

  [root@saltstack-client2 test]# cat /etc/passwd 

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 

uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin 

operator:x:11:0:operator:/root:/sbin/nologin 

games:x:12:100:games:/usr/games:/sbin/nologin 

gopher:x:13:30:gopher:/var/gopher:/sbin/nologin 

ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin 

nobody:x:99:99:Nobody:/:/sbin/nologin 

dbus:x:81:81:System message bus:/:/sbin/nologin 

vcsa:x:69:69:virtual console memory owner:/dev:/sbin/nologin 

rpc:x:32:32:Rpcbind Daemon:/var/cache/rpcbind:/sbin/nologin 

abrt:x:173:173::/etc/abrt:/sbin/nologin 

haldaemon:x:68:68:HAL daemon:/:/sbin/nologin 

ntp:x:38:38::/etc/ntp:/sbin/nologin 

saslauth:x:499:76:"Saslauthd user":/var/empty/saslauth:/sbin/nologin 

postfix:x:89:89::/var/spool/postfix:/sbin/nologin 

rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin 

nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin 

sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin 

tcpdump:x:72:72::/:/sbin/nologin 

oprofile:x:16:16:Special user account to be used by OProfile:/home/oprofile:/sbin/nologin 

nagios:x:1000:1000::/home/nagios:/bin/bash 

tomcat:x:1002:1002::/data/tomcat/:/bin/bash 

zabbix:x:498:498:Zabbix Monitoring System:/var/lib/zabbix:/sbin/nologin 

mysql:x:27:27:MySQL Server:/var/lib/mysql:/bin/bash  

  [root@saltstack-client2 test]# awk -F ":" '{print $1}' /etc/passwd 

root 

bin 

daemon 

adm 

lp 

sync 

shutdown 

halt 

mail 

uucp 

operator 

games 

gopher 

ftp 

nobody 

dbus 

vcsa 

rpc 

abrt 

haldaemon 

ntp 

saslauth 

postfix 

rpcuser 

nfsnobody 

sshd 

tcpdump 

oprofile 

nagios 

tomcat 

zabbix 

mysql 

 

  打印/etc/passwd最后一列的内容  

  [root@saltstack-client2 test]# awk -F ":" '{print $NF}' /etc/passwd 

/bin/bash 

/sbin/nologin 

/sbin/nologin 

/sbin/nologin 

/sbin/nologin 

/bin/sync 

/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 

/sbin/nologin 

/sbin/nologin 

/sbin/nologin

 /sbin/nologin 

/sbin/nologin 

/sbin/nologin 

/sbin/nologin 

/sbin/nologin 

/sbin/nologin 

/bin/bash 

/bin/bash 

/sbin/nologin 

/bin/bash  

 

  小练习,练习着玩 哈哈 

  [root@saltstack-client2 test]# awk -F ":" '{print $1"="$2"="$3}' /etc/passwd 

root=x=0 

bin=x=1 

daemon=x=2 

adm=x=3 

lp=x=4 

sync=x=5 

shutdown=x=6 

halt=x=7 

mail=x=8 

uucp=x=10 

operator=x=11 

games=x=12 

gopher=x=13 

ftp=x=14 

nobody=x=99 

dbus=x=81 

vcsa=x=69 

rpc=x=32 

abrt=x=173 

haldaemon=x=68 

ntp=x=38 

saslauth=x=499 

postfix=x=89 

rpcuser=x=29 

nfsnobody=x=65534 

sshd=x=74 

tcpdump=x=72 

oprofile=x=16 

nagios=x=1000 

tomcat=x=1002 

zabbix=x=498 

mysql=x=27 

 

awk多分隔符功能 

例子:取出oldboy  49000448 

[root@saltstack-server ~]# cat oldboy.txt 

I am oldboy, myqq is 49000448 

法一: 

[root@saltstack-server ~]# sed 's#,# #g' oldboy.txt |cut -d " " -f3,7 

oldboy 49000448 

 

法二:(自己想的) 

[root@saltstack-server ~]# cut -d " " -f3,6 oldboy.txt |awk -F "," '{print$1 $2}' 

oldboy 49000448

 

awk多分割符的用法举例 

法三:使用多分隔符:[ ] 

[root@saltstack-server ~]# awk -F "[, ]" '{print $3 " " $7}' oldboy.txt   -à以逗号,空格作为分割符。 

oldboy 49000448  

 

查看文件的行数(wc命令案例) 

-l:查看文件的行数 

-c:查看文件的字节数 

-m:查看文件的字符数 

记住-l就行!

 

查看文件行数例子  

例子: 

[root@saltstack-server ~]# cat oldboy.txt 

I am oldboy, myqq is 49000448  

[root@saltstack-server ~]# wc -l oldboy.txt 

1 oldboy.txt  

[root@saltstack-server ~]# wc -l /etc/services 

10774 /etc/services  

查看某个服务是否开启 

查看下SSH服务是否开启: 

[root@saltstack-server ~]# netstat -lntup|grep ssh 

tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN      1571/sshd 

 

查看进程数(企业案例常见) 

[root@saltstack-server ~]# netstat -lntup|grep ssh|wc -l 

1   

过滤多个字符串 

例子:  

[root@saltstack-server ~]# grep -E "3306|1521" /etc/services 

mysql           3306/tcp                        # MySQL

 

mysql           3306/udp                        # MySQL

 

ncube-lm        1521/tcp                # nCube License Manager

 

ncube-lm        1521/udp                # nCube License Manager 

 

转载于:https://www.cnblogs.com/renyongbin/p/6589021.html

你可能感兴趣的文章
mysql5.6基于GTID的主从复制
查看>>
iOS 获取Wifi的SSID及MAC地址
查看>>
认识六个被误解的Ruby特性
查看>>
Java线程:并发协作-生产者消费者模型
查看>>
libvirt API非阻塞调用及相关的原理分析
查看>>
老男孩第十四期Python学习班之Day06
查看>>
更改sql 数据库 SA密码 找不到sp_password存储过程
查看>>
破解软件注册码
查看>>
使用iptables应对SYN***、CC***、ACK***
查看>>
NO.9 用禅道项目管理软件创建第一个产品
查看>>
2013年10月15日星期二——java web 环境搭建(MySQL)
查看>>
CSS-first-letter实现首字下沉
查看>>
第二部分 Swift 语言指南
查看>>
我的友情链接
查看>>
日志可视化分析
查看>>
没有vcenter的克隆vm的方法(ESXi5 youtube)
查看>>
docker深入2-容器删除操作失败
查看>>
htmlspecialchars
查看>>
解决Ubuntu下sqldeveloper中文乱码问题
查看>>
常见Linux系统目录、文件类型、ls命令、alias命令
查看>>