linux 文本处理 awk,Linux之文本处理--awk

1.grep -->egrep -->文本过滤

gwak(gun awk): 支持数学运算,流控(if-else,循环,正则),本质上就是一门语言 patten or scanning and processing language

2.awk:文本截取,模式扫描和处理的语言。

3.sed :文本的替换和修改

awk命令详解

完整语法 :awk 'BEGIN{commands}pattern{commands}END{commanda}' file1

BEGIN、 END -->只执行一次

awk -F 分隔符 ‘/模式/{动作}’ 输入文件

awk的指令一定要用单引号括起

awk的动作一定要用花括号括起

模式可以是正则表达式、条件表达式或两种组合,如果模式是正则表达式要用/定界符,多个动作之间用;号分开

awk命令的操作符

正则表达式和bash一致

数学运算:+,-,*,/, %,++,- -

逻辑关系符:&&, ||, !

比较操作符:>,=,!=,<=,== ~ !~

awk 内置变量 内部引用变量不需要'$'符号

FS :当前的分隔符,默认是空白字符

OFS :当前的输出 分隔符,默认是空白字符

NR : 当前行号

NF: number of filed 一行里面有多少个字段 $NF -->取最后一个字段 倒数第二个 $NF-1

单词界定符号

\单词以feng开头

feng\> -->单词以feng 结尾

\-->查找单词feng

一、

(1)输出 /etc/passwd下第1,3,4个字段

[root@wang lianxi]# awk -F ':' '{print$1 $3 $4}' /etc/passwd

(2)指定分隔符“#”

[root@wang lianxi]# awk -F: 'OFS="#"{print $1,$3,$4}' /etc/passwd

# 注意单双引号;

(3)生成指定文件

awk -F: 'OFS="#"{print $1,$3,$4}' /etc/passwd >passwd.csv

(4) 输出拼接

awk -F: 'OFS="#"{print "username:"$1 " uid: " $3 " gid: " $4}' /etc/passwd

username:root uid:0 gid:0

(5)找出含指定bash字段

[root@wang lianxi]# awk '/bash/' /etc/passwd

root:x:0:0:root:/root:/bin/bash

webadmin:x:1000:1000::/home/webadmin:/bin/bash

(6)找出第1,7 个字段不是 以h开头的行

[root@wang lianxi]# awk -F: '/^[^h]/{print $1,$7}' /etc/passwd

练习:

1.使用NF变量显示passwd文件倒数第二列的内容

[root@localhost ~]# cat /etc/passwd|awk -F: '{print $(NF-1)}'

2.显示passwd文件中第5到第10行的用户名

[root@localhost ~]# cat /etc/passwd|awk 'NR>=5&&NR<=10'

3.显示passwd文件中第7列不是bash的用户名

cat /etc/passwd|awk -F:'$7 !~ /bash/{print NR,$1}'

4.显示passwd文件中行号是5结尾的行号和行

cat /etc/passwd|awk -F: 'NR ~/5/ {print $0 NR}'

5.用ip add 只显示ip(不能使用tr或者cut命令)

[root@wsy lianxi]# ip add|awk -F "[ /]+" '/inet /{print $3}'

6.使用awk显示ens33的入站流量和出站流量(字节) --》ifconfig --》安装net-tools软件包

[root@localhost ~]# ifconfig| awk 'NR==5||NR==7{print $5}'

7.使用awk命令统计以r开头的用户数目

[root@wang lianxi]# cat /etc/passwd|awk -F: 'BEGIN{n=0}$1 ~/^r/{n++}END{print n}'

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值