shell三大文本处理工具grep、sed、awk心得

grep文本搜集工具

-c : 只输出匹配的行
-I : 不区分大小写,默认是忽略大小写的
-n : 显示匹配的行号及行
-v : 显示不包含匹配文本的所有行(我经常用除去grep本身)

grep '支持正则表达式' text.txt

sed以行为单位的文本编辑工具 sed可以直接修改档案

sed -n '1d' abc-------- sed '1d' abc

-n : 安静模式,什么内容也不显示, 因为经过sed处理的行, 是个删除操作, 所以不显示--------显示删除后的所有行

d:是删除行的指令

sed -e '1,5d' -e 's/abc/xxx/g' filename

-e : 多重编辑。

s/old/new/g:是替换字符串的命令

sed '/test/a xx' abc

将xx 追加到所有的带 test 行的下一行

sed '/test/c xx' abc

将xx 替换所有带 test 的行

i 插入, 后面的字符串, 会在上一行出现
p 打印, 将选择的资料列出, 通常和 sed -n 一起运作 sed -n '3p' 只打印第3行

sed -n '/m/w qqq' abc

从abc中读取带m的行写到qqq文件中, 注意, 这个写入带有覆盖性.

 

awk 一行一行的分析处理        

格式如下:

awk '条件类型1{动作1}条件类型2{动作2}'filename

awk '{print $1}' text.txt

对text.txt的内容一行一行按空格分割,默认就是空格,而且连续多个空格看作一个。打印出所有行的第一个内容

print 后面的参数 $0代表整行,$2代表分割的第二个内容......,NF: 每一行处理的字段数, NR 目前处理到第几行, FS 目前的分隔符, $NF是输出最后一个字段的值

{FS=":" }指定以此分隔符分割

awk 'END{print $1}' text.txt

BEGIN和END命令,一个是awk之前,一个是awk之后执行。这里就可以深入了解到print和awk的原理。awk是行处理单位,因此,print的操作是每处理完一行后执行的操作,因此有多少行打印多少。如果加上开始或者结束标记的话,开始前是空,结尾是最后一行处理的值。

awk '/test/ {print NR}' text.txt

/ / 双斜线中间是正则表达式,这句是将含有test字符串的行号打印出来。

awk -F: '$3>=500{print $1,$3}'/etc/passwd

''引号中间支持表达式计算

awk -F: '$7~"bash$"{print $1,$7}'

 ~和!~使用到模式匹配,!代表不匹配

awk -F:-v sum=0 '{if ($3>=500)sum++}END{print sum}' /etc/passwd

{}里面可以使用判断好循环表达式,这里利用了:分隔符,定义sum变量,最后输出sum的值

 for(iin name) print name[i]}

for循环的特殊之处在于,i是name的下标而非像python中的每个元素

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值