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后缀名可以备份被修改的文件

Linux-命令-sed-awk-grep详解程序员

 

-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

Linux-命令-sed-awk-grep详解程序员

 

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

sed 过滤方法:

Linux-命令-sed-awk-grep详解程序员

Linux-命令-sed-awk-grep详解程序员

Linux-命令-sed-awk-grep详解程序员

 

 

面试题: 把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. 

 [[email protected] log]# awk ‘NR>19&&NR<31’ ett.log

解释:NR 是行号

-F 指定分隔符

 

awk match 方法

Linux-命令-sed-awk-grep详解程序员

 


命令: 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://blog.ytso.com/1957.html

(0)
上一篇 2021年7月15日
下一篇 2021年7月15日

相关推荐

发表回复

登录后才能评论