Linux-命令-sed-awk-grep

命令: sed [options] 流编辑器,对文件增删改查换, 三剑客老二

注意 sed "s#正则##g"    : 第一个位置正则

sed 后向引用, sed -n 's#()()#\1\2#g'

参数:

-n: 取消默认输出

 -i: 原地修改 edit files in place

-i.bak -i参数后加.bak后缀名可以备份被修改的文件

 

-e: 多项编辑

-r: --regexp-extended

              use extended regular expressions in the script.

功能:

p: (print)打印

e.g. sed -n '20,30'p ett.log  打印ett.log 中20-30行内容

e.g. sed -n '$'p ett.log  打印ett.log 中最后一行内容,$是文件结尾

s: 替换

g: global

组合: sed 's#{old}#{new}#g' file

注意:输出的内容已经更改,但是文件本身内容没有更改

y:替换,相当于tr

 

q:quit 退出 例: sed '10q' /etc/passwd 处理到第10行退出

sed 过滤方法:

 

 

面试题: 把AFolder 下的所有 *b*.sh 的文件内容中 'xxxxx' 换成'yyyyy'.

方法1: find AFolder -type f -name ' *b*.sh ' | xargs sed -i 's#xxxxx#yyyyy#g'

方法2: sed -i 's#xxxxx#yyyyy#g' `find AFolder -type f -name '*b*.sh' `

 


命令: awk [options]  过滤输出内容, 三剑客老大

参数:

e.g. 

 [root@ark log]# awk 'NR>19&&NR<31' ett.log

解释:NR 是行号

-F 指定分隔符

 

awk match 方法

 


命令: grep  [options] 三剑客老三

参数:

-A:除了显示匹配的一行之外,并显示该行之后的num行(after)

-B:除了显示匹配的一行之外,并显示该行之前的num行(before)

-C:除了显示匹配的一行之外,并显示之前和之后的num行

-x, --line-regexp 精确匹配
Select only those matches that exactly match the whole
line

e.g. grep -x 11 -A 10 ett.log 

解释: ett.log中有1000行, 如果没有-x参数 ,则匹配 11,111,211,311,411 等等 之后的10行.

而有-x参数,只精确匹配"11"(-x 之后的字符串) 所以结果只有从11开始后跟10行数据

-v: 排除 -invert-match

排除不需要的内容

-i : 不区分大小写

转载于:https://www.cnblogs.com/mirrorlake/p/7339873.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值