ajax三剑客,话.linux三剑客之利刃出鞘

本文详细介绍了Linux系统中的文本处理工具awk、sed和grep的使用,包括它们的基本功能、常用选项及在实际操作中的应用案例。通过案例展示了如何使用grep快速查找IP,以及如何用sed和awk对日期格式进行转换,揭示了这三个工具的强大处理能力。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

剑客起源于唐代传奇的中国武侠小说中,他们所使用的兵器剑的地位是至高无上的,一直也是兵器中的王者,符合了剑在中国古代社会的地位。今天给大家详细的总结一下linux系统下的利刃兵器:awk、sed、grep

三剑客介绍(grep、sed、awk)

老三:grep

是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来

# grep 常用选项

-c #只输出匹配行的计数

-i #不区分大小写

-h #查询多文件时不显示文件名

-l #查询多文件时只输出包含匹配字符的文件名

-n #显示匹配行及行号

-s #不显示不存在或无匹配文本的错误信息

-v #显示不包含匹配文本的所有行

-E #支持扩展的正则表达式

-P #调用perl语法正则

老二:sed

对文本的处理很强大,增、删、改、查样样能做

# sed 常用选项 -r #在脚本中使用扩展正则表达式 -n #不打印所有行到标准输出 -i #直接修改文件

老大:awk(带头大哥)

可以理解为一门编程语言,可以自定义变量,有条件语句,有循环,有数组,有正则,有函数

# awk 常用变量

$n #当前记录的第n个字段,字段间由 FS分隔

$0 #完整的输入记录

FNR #同NR,但相对于当前文件

FS #字段分隔符(默认是任何空格)

NF #当前记录中的字段数

NR #当前记录数

OFS #输出字段分隔符(默认值是一个空格)

ORS #输出记录分隔符(默认值是一个换行符)

# awk 常用字符串函数

sub #匹配记录中最大、最靠左边的子字符串的正则表达式,并用替换字符串替换这些字符串

gsub #整个文档中进行匹配

index #返回子字符串第一次被匹配的位置

substr #返回从位置1开始的子字符串,如果指定长度超过实际长度,就返回整个字符串

split #可按给定的分隔符把字符串分割为一个数组,默认按当前FS值进行分割

length #返回记录的字符数

toupper #可用于字符串大小间的转换,该功能只在gawk中有效

tolower #可用于字符串大小间的转换,该功能只在gawk中有效

# awk 常用函数

srand(x) #x是rand()函数的种子

int(x) #取整

rand() #产生一个大于等于0而小于1的随机数

案例使用(有很多种方法,今天我们这里只说三剑客的使用方法)

1.快速取出本机IP?

# grep ifconfig eth0|grep -Po '(?<=dr:)\S+'

# sed  ifconfig eth0|sed -rn 's#.*r:(.*)  B.*#\1#gp'

# awk  ifconfig eth0|awk -F '[ :]+' 'NR==2{print $4}'

5c7531a6327d869ed74b11c1c49b97cf.png

2.原始数据格式替换成新数据格式(grep自己无法实现该功能了)

原始数据:

17/Apr/2015:09:29:24 +0800

17/Apr/2015:09:30:26 +0800

17/Apr/2015:09:31:56 +0800

18/Apr/2015:09:34:12 +0800

18/Apr/2015:09:35:23 +0800

19/Apr/2015:09:23:34 +0800

19/Apr/2015:09:22:21 +0800

20/Apr/2015:09:45:22 +0800

期望结果:

2015-04-17 09:29:24+0800

2015-04-17 09:30:26+0800

2015-04-17 09:31:56+0800

2015-04-18 09:34:12+0800

2015-04-18 09:35:23+0800

2015-04-19 09:23:34+0800

2015-04-19 09:22:21+0800

2015-04-20 09:45:22+0800

# sed

sed-rn's#Apr#04#g;s#^(.*)/(.*)/(....):(.*) (.*)#\3-\2-\1 \4\5#p;'test.log sed-rn's#^(.{2})/(.{3})/(.{4}):(.{8}) (.{4})#\3-04-\1 \4\5#p;'test.log

# awk

awk-F'[/: ]+''{sub(/Apr/,"04");printf("%s-%s-%s %s:%s:%s%s\n",$3,$2,$1,$4,$5,$6,$7)}'test.log awk'{sub(/Apr/,"04");split($0,array,"[/: ]") ;printf("%s-%s-%s %s:%s:%s%s\n",array[3],array[2],array[1],array[4],array[5],array[6],array[7])}'test.log

d0d73b6b4f7a0c662149005f745b89d9.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值