概要:分别的作用
grep:文本过滤(模式:pattern)工具,grep,egrep,fgrep,擅长过滤。
sed:stream editor 文本编辑工具;(流编辑器),擅长取行、替换。
awk:linux上的实现gawk,文件报告生成器;(独立的编程语言),过滤内容,擅长取列。
find: linux上实时查找工具,通过便利指定路径下得文件系统完成文件查找。
参考1、:《曝光linux企业运维实战》
参考2、:https://www.cnblogs.com/maxincai/p/5146338.html
一、sed
sed是一个非交互式文本编辑器,它可对文本文件和标准输入进行编辑
1、语法
sed [-options] ['commands'] filename;
sed工具默认处理文本,文本内容输出屏幕已经修改,但是文件内容没有修改,需要加-i参数,对文件进行彻底修改
2、参数及命令
x:指定行号
x,y:指定从x到y的行号范围
/pattern/:查询包含模式的行
/pattern/pattern/:查询包含两个模式的行
/pattern/,x:从与pattern的匹配行到x号行之间的行
x,/pattern/:从x号行到与pattern的匹配行之间的行
x,y!:查询不包括x和y行号的行
r:从另一个文件中读文件
w:将文本写入到一个文件
y:变换字符
q:第一个模式匹配完成后退出
l:显示与八进制ASCII码等价的控制字符
{}:在定位行执行的命令组
p:打印匹配行
P:打印模板块的行
=:打印文件行号
a\:在定位行号之后追加文本信息
i\:在定位行号之前插入文本信息
d:删除定位行
D:删除模板快第一行
c\:用新文本替换定位文本
s:使用替换模式替换相应模式
n:读取下一个输入行,用下一个命令处理新的行
N:将当前都入行的下一行读取到当前的模式空间
h:将模式缓冲区的文本赋值到保持缓冲区
H:将模式缓冲区的文本追加到保持缓冲区
x:互换模式缓冲区和保持缓冲区的内容
g:将保持缓冲区的内容赋值到模式缓冲区
G:将保持缓冲区的内容追加到模式缓冲区
3、元字符集
^ :匹配行开始,/^sed/
$:匹配行结束
.:匹配一个非换行符的任意字符,如:/s.d/匹配s后接一个任意字符,最后是d
*:匹配0个或多个字符,/*sed/
[]:匹配一个指定范围内的字符/[sS]ed/
[^]:匹配一个不在指定范围内的字符,/[^A-RT-Z]E/匹配A-R和T-Z的一个字幕开头,紧跟ed 的行
(..):匹配子串,保存匹配的字符,如s/(abc)de/\1rs,abcde被替换成abcrs。
&:保存搜索字符用来替换其他字符,s/abc/&/,abc成abc
<:匹配单词的开始,如:/ >:匹配单词的结束 x{m}:重复字符x,m次,/0{5}/匹配包含5个0的行 x{m,}:重复字符x,至少m次 x{m,n}:重复字符x,至少m次,不多于n次 1、替换abc.txt文本中abc为ddd 2、打印abc.txt文本第一行到第三行 3、打印abc.txt文本中第一行与最后一行 4、删除abc.txt文本第一行至第三行、删除匹配行至最后一行 5、删除abc.txt文本最后6行及删除最后一行 ? 6、删除abc.txt最后6行 不会做,有没有会的???????? 7、在abc.txt查找abc所在行,并在其下一行添加word字符,a表示在其下一行添加字符串 8、在abc.txt查找ddd所在行,并在其上一行添加word字符,i表示在其上一行添加字符串 9、在abc.txt查找以.aaa结尾的行,在其行尾添加字符串word,$代表结尾标识,&在sed中表示添加 10、在abc.txt查找web的行,在其行首添加字符串www,^表示起始标识,&表示添加 11、多个sed命令组合,使用-e参数 12、多个sed命令组合,使用“;”分割,效果跟上面一样 13、sed读取系统变量,进行变量替换 14、修改SELinux策略,enforcing为disabled,查找/SELINUX/行,然后将其行enforcing值改为disabled,!s表示不包括SELINUX行 三、sed高级语法 1、N、D、P:处理多行模式空间的问题 2、H、h、G、g、x:将模式空间的内容放入存储空间以便接下来的编辑 3、 :、b、t:在脚本中实现分支与条件结构 实例: 1、在abc.txt每行后加入空行,也即每行占用两行空间,每一行后边插入一行空行、两行空行即前三行每行后插入空行 2、将abc.txt偶数行删除及隔两行删除一行 3、在abc.txt匹配行前一行、后一行插入空行以及同时在匹配前后插入空行 4、在abc.txt每行前加入顺序数字序号、加上制表符 "\t"即 "."符号 5、删除abc.txt行前和行尾的任意空格 6、打印abc.txt关键词abc与ab之间的内容 7、打印及删除abc.txt最后两行 二、练习案例
sed 's/abc/ddd/g' abc.txt
sed -n '1,3p' abc.txt
sed -n '1p; $p' abc.txt
sed '1,3d' abc.txt
sed '/df/,$d' abc.txt
sed '$d' abc.txt
sed '/abc/aword' abc.txt
sed '/aaa/iword' abc.txt
sed 's/aaa$/&word/g' abc.txt
sed '/web/s/^/&www/' abc.txt
sed -e '/www.zxg.com/s/^/&1./' -e 's/www.zxg.com$/&./g' abc.txt
ddd
sed -e '/www.zxg.com/s/^/&1./;s/www.zxg.com$/&./g' abc.txt
sed "s/www.zxg.com/$WEBSITE/g" abc.txt
sed -i '/SELINUX/s/enforcing/disabled/g' /etc/selinux/config
sed '/^$/d;G' abc.txt
sed '/^$/d;G;G' abc.txt
sed '/^$/d;1,3G;' abc.txt
sed 'n;d' abc.txt
sed 'n;n;d' abc.txt
sed '/abc/{x;p;x}' abc.txt
sed '/abc/G' abc.txt
sed '/abc/{x;p;x;G}' abc.txt
[root@web1 sed]# sed = abc.txt|sed 'N;s/\n/ /'
1 ddd
2 www.zxg.com
3 web
4 aaaa
5 aaa
6 bdc
7 abc
8 ac
9 ab
10 dfadfsfaklfjksdaf
11 adfafdfasfdfadsfs
12 aaaaaaaaaaaaaaa
13 bbbbbbbbbbbbbbbbbb
14 cccccccccccccccccccc
15 C
[root@web1 sed]# sed = abc.txt|sed 'N;s/\n/\t/'
1 ddd
2 www.zxg.com
3 web
4 aaaa
5 aaa
6 bdc
7 abc
8 ac
9 ab
10 dfadfsfaklfjksdaf
11 adfafdfasfdfadsfs
12 aaaaaaaaaaaaaaa
13 bbbbbbbbbbbbbbbbbb
14 cccccccccccccccccccc
15 C
[root@web1 sed]# sed = abc.txt|sed 'N;s/\n/\./'
1.ddd
2.www.zxg.com
3.web
4.aaaa
5.aaa
6.bdc
7.abc
8.ac
9.ab
10.dfadfsfaklfjksdaf
11.adfafdfasfdfadsfs
12.aaaaaaaaaaaaaaa
13.bbbbbbbbbbbbbbbbbb
14.cccccccccccccccccccc
15.C
[root@web1 sed]#
[root@web1 sed]# sed 's/^[ \t]*//;s/[ \t]*$//' abc.txt
ddd
www.zxg.com
web
aaaa
aaa
bdc
abc
ac
ab
dfadfsfaklfjksdaf
adfafdfasfdfadsfs
aaaaaaaaaaaaaaa
bbbbbbbbbbbbbbbbbb
cccccccccccccccccccc
C
[root@web1 sed]# cat abc.txt
ddd
www.zxg.com
web
aaaa
aaa
bdc
abc
ac
ab
dfadfsfaklfjksdaf
adfafdfasfdfadsfs
aaaaaaaaaaaaaaa
bbbbbbbbbbbbbbbbbb
cccccccccccccccccccc
C
[root@web1 sed]#
[root@web1 sed]# sed -n '/abc/,/ab/'p abc.txt
abc
ac
ab
[root@web1 sed]#
[root@web1 sed]# sed '$!N;$!D' abc.txt
cccccccccccccccccccc
C
[root@web1 sed]# sed 'N; $!P; $!D; $d' abc.txt
ddd
www.zxg.com
web
aaaa
aaa
bdc
abc
ac
ab
dfadfsfaklfjksdaf
adfafdfasfdfadsfs
aaaaaaaaaaaaaaa
bbbbbbbbbbbbbbbbbb
[root@web1 sed]#
转载请注明出处:https://www.cnblogs.com/zhangxingeng/p/10824548.html