Linux中的查找和替换-grep和sed命令

grep用于查找文件中的内容

配置举例

[root@lewis ~]# cat /etc/passwd | grep root
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
dockerroot:x:988:982:Docker User:/var/lib/docker:/sbin/nologin

sed可以查找,然后替换或者插入想要的内容

sed命令是利用script来处理文本文件。
sed可依照script的指令,来处理、编辑文本文件。
sed主要用来自动编辑一个或多个文件;简化对文件的反复操作;编写转换程序等

语法:

sed [-hnV][-e<script>][-f<script文件>][文本文件]

a :新增,a的后面可以接字串,而这些字串会在新的一行出现(目前的下一行);
d :删除,因为是删除啊,所以d后面通常不接任何东西的;
i : 插入,i的后面可以接字串,而这些字串会在新的一行出现(目前的上一行);
p :列印,亦即将某个选择的资料印出。通常 p 会与参数 sed
s :取代,可以直接进行取代的工作!

配置举例
拷贝一个文件到tmp目录下进程测试

[root@lewis tmp]# cp /etc/passwd abc

1、删除/tmp/abc文件中第 2 至 30 行的内容,仅仅是显示,源文件内容是不修改的。

[root@lewis tmp]# sed '2,30d' abc
root:x:0:0:root:/root:/bin/bash
tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
usbmuxd:x:113:113:usbmuxd user:/:/sbin/nologin
...

2、在第 2 行后面添加 123456 这一行,仅仅是显示,源文件是不修改的。

[root@lewis tmp]# sed 2a\123456 abc
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
123456
daemon:x:2:2:daemon:/sbin:/sbin/nologin

3、删除/tmp/abc文件中第 2 至 45 行的内容,并且在最后一行添加123456,仅仅是显示,源文件是不修改的。
$ 代表的是最后一行

[root@lewis tmp]# sed '$a\123456' abc | sed '2,45d'
root:x:0:0:root:/root:/bin/bash
user2:x:1003:1003::/home/user2:/bin/bash
user3:x:1004:1004::/home/user3:/bin/bash
dockerroot:x:988:982:Docker User:/var/lib/docker:/sbin/nologin
123456

4、将文件中的 root全部替换成 super,并且只显示第一行。仅仅是显示,源文件是不修改的。

[root@lewis tmp]# sed -e 's/root/super/' abc | head -n 1
super:x:0:0:root:/root:/bin/bash

如果要对原文件进行修改,使用 –i 选项(慎用)

猜你喜欢

转载自blog.csdn.net/u010599211/article/details/85091185