grep常用方法

1.将/etc/passwd,有出现 root 的行取出来
# grep root /etc/passwd

2.将/etc/passwd,有出现 root 的行取出来,同时显示这些行在/etc/passwd的行号
# grep -n root /etc/passwd

3.将/etc/passwd,将没有出现 root 的行取出来
# grep -v root /etc/passwd

4.将/etc/passwd,将没有出现 root 和nologin的行取出来
# grep -v root /etc/passwd | grep -v nologin

5.用dmesg 列出核心信息,再以 grep 找出内含 eth 那行,要将捉到的关键字显色,且加上行号来表示:
[root@www ~]# dmesg | grep -n –color=auto ‘eth’

6.用dmesg 列出核心信息,再以 grep 找出内含 eth 那行,在关键字所在行的前两行与后三行也一起捉出来显示
[root@www ~]# dmesg | grep -n -A3 -B2 –color=auto ‘eth’

7.根据文件内容递归查找目录
# grep ‘maxianwei.cn’ *      #在当前目录搜索带’maxianwei.cn’行的文件
# grep -r ‘maxianwei.cn’ *     #在当前目录及其子目录下搜索”行的文件
# grep -l -r ‘maxianwei.cn’ *    #在当前目录及其子目录下搜索’maxianwei.cn’行的文件,但是不显示匹配的行,只显示匹配的文件

具体grep相关参数可以参考:https://www.runoob.com/linux/linux-comm-grep.html

linux sed 批量替换字符串

sed是一种流编编器,它是文本处理中非常中的工具,能够完美的配合正则表达式便用,功物能不同凡响。详细的功能网上很多,这里就不多说了,项目中我要批量替换静态文件的一个域名具体操作如下:

命令如下:

sed -i "s/原字符串/新字符串/g" `grep 原字符串 -rl 所在目录`

例如:我要把 www.maixianwei.cn 替换为 cdn.maxianwei.cn,执行命令:

sed -i "s/www.maxianwei.cn/cnd.maxianwei.cn/g" `grep www.maxianwei.cn -rl /www`

-i 表示inplace edit,就地修改文件

-r 表示搜索子目录

-l 表示输出匹配的文件名

修改前,要注意备份文件。

如果文件太多 可以分批进行 比如:

[root@localhost html]# sed -i “s/maxianwei.cn\/upload/maxianwei.c\/upload/g” `grep admin.maxianwei.cn -rl ./12*.html`