grep 主要作用就是从大量的文本中匹配你所需要的部分
grep [-cinvABC] ‘word’ filename
- -c 行数
- -i 不区分大小写
- -n 显示行号
- -v 取反
- -r 遍历所有子目录
- -A 后面跟数字,过滤出符合要求的行以及下面n行
- -B 后面跟数字,过滤出符合要求的行以及上面n行
- -C 后面跟数字,同时过滤出符合要求的行以及上下各n行
- -E egrep = grep -E 可以使用基本的正则表达外, 还可以用扩展表达式.
测试文本create.log
- -c 匹配的行数,输出行数
grep -c "install" create.log
2. -i 匹配不区分大小写,输出所以内容
grep -i "dddd" test
3. -n 输出所有并显示行数
grep -n "install" create.log
4. -v 取反,输出所有没有“install”的行
grep -inv "dddd" test
5. -r 查一个目录下的所有文件中包含“install”的行,并重定向到test.txt中
grep -r "play" bb
一些简单例子:
sed
主要是用来讲数据进行选取、替换、删除、新增的命令,如果不加-i选项是不会更改文件内容的,如果不确定的情况下,尽量不要更改系统中的配置文件。
sed [选项] ‘[动作]’ 文件名
选项
- -n :一般sed命令会把所有数据都输出到屏幕上,如果加上-n 则会把经过sed命令处理过的命令输出到屏幕上。
- -e: 允许对输入数据应用多条sed命令编辑
- -i:用sed的修改结果直接修改读取数据的文件,而不是由屏幕输出
动作
- a:追加,在当前行后添加一行或多行
- c:行替换,用c后面的字符串替换原数据行
- i:插入,在当前行插入一行或者多行
- d:删除,删除指定的行
- p:打印,输出指定的行
- s:字符串替换,用一个字符串替换另外一个字符串。格式为“行范围s/旧字串/新字串/g"
小例子:
test文件内容
abaabaaba34aa
AAAAAAAAAAA
BBBBBB1BBBBB
CCCCCBB2BBBB
DDDDddddd7dd
ddddddddd8dd
asdfgggggggggg
sdfetteedfsdf
thidk sdfkga
- -n :一般sed命令会把所有数据都输出到屏幕上,如果加上-n 则会把经过sed命令处理过的命令输出到屏幕上。
[root@localhost ~]# sed -n '/thi/'p test
thidk sdfkga
- sed ‘2a hello word’ test在文件test中第二行后面添加一行内容 hello word
[root@localhost ~]# sed "2a hello world" test
abaabaaba34aa
AAAAAAAAAAA
hello world
BBBBBB1BBBBB
...
- sed ‘2i hello word’ test在文件test中第二行前面添加一行内容 hello word
[root@localhost ~]# sed "2i hello world" test
abaabaaba34aa
hello world
AAAAAAAAAAA
BBBBBB1BBBBB
...
- sed “2d” test 删除test文件内容中的第二行
[root@localhost ~]# sed "2d" test
abaabaaba34aa
BBBBBB1BBBBB
...
- sed “2c 222222” test 将 test 文件内容中的第四行替换为 444
[root@localhost ~]# sed "2c 222222" test
abaabaaba34aa
222222
BBBBBB1BBBBB
...
- sed “2s/AAA/aAa/g” test将第一行的aaa更改为a1a
[root@localhost ~]# sed "2s/AAA/aAa/g" test
abaabaaba34aa
aAaaAaaAaAA
BBBBBB1BBBBB
...
- 以上增删改的命令中增加-i参数就会去真实的修改文件,而不会输出到屏幕
[root@localhost ~]# sed -i "2s/AAA/aAa/g" test
[root@localhost ~]# cat test
abaabaaba34aa
aAaaAaaAaAA
BBBBBB1BBBBB
...
- sed [-i] -e “2a helloworld” -e “3a helloworld” test(加-i修改文件,以上同理) 使用-e命令执行多条sed命令。
[root@localhost ~]# sed -e "2a helloworld" -e "3a helloworld" test
abaabaaba34aa
aAaaAaaAaAA
helloworld
BBBBBB1BBBBB
helloworld
...