4.shell数据处理之grep、cut、awk、sed

一、grep

应用场景: 通常对数据进行处理

语法:grep [选项] [内容] [文件名]

-v : 对内容进行取反提取

-n : 对提取的内容显示行号

-w : 精确匹配,全字符匹配上某一行

-i : 忽略大小写

^ : 匹配以之后内容为首的行,如grep '^user' /test,匹配以user为首的行

-E : 正则匹配,如grep -E 'user1|user2|user3' /test ,匹配有user1或user2或user3的行

-r : 递归搜索

-e : 该选项加上正则表达式就是一个需要匹配的模式,如grep -e 'user1' -e 'user2' /test,匹配user1或user2的行

 

二、cut

应用场景:通常对数据进行列提取

语法: cut [选项] [文件]

-d : 指定分隔符

-f : 指定截取区域

-c : 以字符为单位进行分割

注:不加-d选项,默认分隔符为制表符(tab),不是空格

eg : 以:为分隔符,截取第一列和第三列

cut -d ':' -f 1,3 /test

eg : 以:为分隔符,截取第一列到第三列

cut -d ':' -f 1-3 /test

eg : 以:为分隔符,截取第一列到最后一列

cut -d ':' -f 1- /test

eg : 截取第一到第三个字符

cut -c 1-3 /test

 

三、awk

应用场景:通常对数据按行进行处理,对结果进行列的提取

语法:awk '条件 {指令}' 文件

           awk '条件1 {指令} 条件2 {指令} ...' 文件

           awk [选项] '条件1 {指令} 条件2 {指令} ...' 文件

特殊点:

printf : 格式化输出,不会自动换行

            (%ns: 字符串型,n代表有几个字符

                %ni: 整型,n代表有几个数字

                %.nf: 浮点型,n代表小数点后有几个小数)

print : 打印输出内容,默认会自动换行

eg : printf '%s %s %s' 1 2 3 4 5 6

eg :df -h | grep /dev/vda1 | awk '{printf "/dev/vda1的使用率是:"} {print $5}

eg : echo "scale=2; 0.13 + 0.12" | bc | awk '{printf "%.2f", $0}'

注:$1、$2...:表示第几列; $0 :表示一整行

-F : 指定分隔符

eg: cat /etc/passwd | awk -F":" '{print $1}'

BEGIN :在读取所有行内容前执行后面的指令,常用于修改内置变量的值

FS : 在BEGIN时,定义分隔符

eg : cat /etc/passwd | awk 'BEGIN {FS=":"} {print $1}'

END : 执行结束后,执行后面的指令

NR: 行号

eg : df -h | awk 'NR==2 {print $5}'

       awk '{NR>=20 && NR<=30} {print $1}' /etc/passwd

 

四、

sed

应用场景:通常对行进行处理及提取

语法:sed [选项] [执行动作] 文件

常见选项和参数

-n : 把匹配到的行输出

p : 以行为单位进行查询,通常与-n一起使用。eg : df -h | sed -n '2p' 输出第二行

d : 删除。eg : sed '2d' df.txt 删除第二行

a : 在行的下面插入新内容。eg : sed '2a 12345' df.txt 在第二行下面插入一行,内容为12345

i :在行的上面插入新内容。eg : sed '2i 12345' df.txt 在第二行上行,内容为12345

c : 替换。eg : sed '2c 12345' df.txt 将第二行替换为12345

s/旧内容/新内容/g :将所有旧内容替换为新内容。eg : sed 's/12345/54321/g' df.txt 将所有12345替换为54321

-i : 对源文件进行修改。

-e : 执行多个动作。eg : sed -n -e 's/123/321/g' -e 's/456/654/g df.txt

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值