ubuntu使用sed替换/查找文件中的内容,使用grep查找包含指定内容的多个文件

sed -i "s/查找字段/替换字段/g" grep 查找字段 -rl 路径 文件名

  • -i 表示inplace edit,就地修改文件
  • -r 表示搜索子目录
  • -l 表示输出匹配的文件名
  • s表示替换,d表示删除
  • 不需要排除去掉exclude就行
  • 或者要排除多个目录呢 --exclude-dir={.git,res,bin}
  • 或者排除一些指定后缀名的文件 比如排除扩展名为 java 和 js 的文件
    --exclude=*.{java,js}

demo
把当前目录下lishan.txt里的shan都替换为hua

sed -i "s/shan/hua/g"  lishan.txt

递归替换
把28080替换为18080 在/data/conf/pb-test下查找

sed -i "s/28080/18080/g" `grep "28080" -rl /data/conf/pb-test`

demo2

## 文件内容含有"tct"的字符全部替换为"wt",且排除搜索.git目录
sed -i  "s/tct/wt/g"  `grep "tct" -rl ./ -R --exclude-dir=.git` xxx.txt

demo3,修改etc/apt/sources.list

sudo sed -i "s/mirrors.tuna.tsinghua.edu.cn/mirrors.aliyun.com/g" `grep "mirrors.tuna.tsinghua.edu.cn" -rl ./sources.list`

demo4
修改默认的ubuntu源替换成ali云源

sed -i "s/cn.archive.ubuntu.com/mirrors.aliyun.com/g" `grep "cn.archive.ubuntu.com" -rl /etc/apt/sources.list`

使用sed查找catalina.out日志文件

按照时间查找文件,并导出到临时文件
demo
查找2020-10-22 17:45:002020-10-22 17:50:00之间的日志内容

sed -n '/2020-10-22 17:45:00/,/2020-10-22 17:50:00/p' catalina.out > test.log

然后可以用less命令查看这个临时文件

D和回车是往下翻
U和Y是往上翻
less -N test.log

grep查找包含指定内容的单/多个文件

搜索某个文件里面是否包含字符串

grep "search content" filename

搜索多个文件是否包含某个字符串

grep "search content" filename1 filename2.... filenamen

搜索的内容如果包含特殊字符时,必须进行转义处理,比如搜索 ‘v$temp_space_header’

grep "v\$temp_space_header" *.sql
grep "search content" *.sql

需要显示搜索文本在文件中的行数,可以使用参数-n

grep  -n "v\$temp_space_header" *.sql

需要忽略大小写问题,可以使用参数-i

grep  "V\$TEMP_SPACE_HEADER" *.sql

文件内容查找不匹配指定字符串的行,即从查询结果中过滤掉那些不想看到的字符

例如查找某些进程时,我们不想显示包含命令grep ora_mmo的进程

ps -ef  | grep ora_mmon  | grep -v grep

在这里插入图片描述

搜索、查找匹配的行数,即包含指定内容一共有几行

grep -c "被查找的字符串" 文件名

在这里插入图片描述

递归搜索某个目录以及子目录下的所有文件,看哪些文件包含指定内容

这个指令可以把内容在文件中搜索出来后直接把对应一行的内容打印到屏幕上

grep -r "v\$temp_space_header" /u01/app/oracle/product/11.1.0/dbhome_1/rdbms/admin/

在这里插入图片描述

如果我们只想获取那些文件包含搜索的内容,即打印屏幕的时候只显示包含内容的文件名

其实这里只是利用了cut -d命令将内容根据:分隔开来,然后f1取第一个中的内容,即文件全路径那一段

grep -H -r "v\$temp_space_header" /u01/app/oracle/product/11.1.0/dbhome_1/rdbms/admin/ | cut -d: -f1

在这里插入图片描述

如果只想获取和整个搜索字符匹配的内容,那么可以使用参数w
这里的 -w 也就是word,即把搜索内容作为一个完整的单词来看,如果是一个单词中包含搜索内容是不会被检索出来的

对比一下两者的区别
在这里插入图片描述

grep命令结合find命令搜索

find . -name '*.sql' -exec grep -i 'v\$temp_space_header' {} \; -print

在这里插入图片描述

参考博文
https://www.cnblogs.com/kerrycode/p/5802420.html

  • 3
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值