Linux查找含有某字符串文件并批量替换

一. 查找文本
1.使用grep查找

如果你想在当前目录下查找hello,world!字符串,可以这样:

grep -rn "hello,world!" *

*: 表示当前目录所有文件,也可以是某个文件名

-r 是递归查找

-n是显示行号

-R 查找所有文件包含子目录

-i 忽略大小写

下面是一些有意思的命令行参数:

  • grep -i pattern files :不区分大小写地搜索。默认情况区分大小写,

  • grep -l pattern files :只列出匹配的文件名,

  • grep -L pattern files :列出不匹配的文件名,

  • grep -w pattern files :只匹配整个单词,而不是字符串的一部分(如匹配magic,而不是magical),

  • grep -C number pattern files :匹配的上下文分别显示[number]行,

  • grep pattern1 | pattern2 files :显示匹配 pattern1pattern2 的行,

  • grep pattern1 files | grep pattern2 :显示既匹配 pattern1 又匹配 pattern2 的行。

这里还有些用于搜索的特殊符号:

\<\> 分别标注单词的开始与结尾。

例如:

grep man *会匹配 Batmanmanicman等,

grep '\<man' * 匹配manicman,但不是Batman

grep '\<man\>'只匹配man,而不是Batmanmanic等其他的字符串。

'^':指匹配的字符串在行首,

'$':指匹配的字符串在行尾,

2. xargs配合grep查找
find -type f -name '*.php'|xargs grep 'GroupRecord'

这个比较常用, 意思是在当前目录下查询php文件,然后再过滤GroupRecord

二. 批量替换文本

vi或者vim模式下使用,语法如下:

%s/a/w/g

其中s为:substitute,%表示所有行,g表示global
示例

%s/data/devicelog/g

data替换成devicelog,注意如果有/,需要转义\/

Sed和Grep是在Linux和Unix系统中非常常用的命令行工具,可以用于快速替换查找字符串。 下面是一个示例,使用sed命令批量替换文本中的字符串: 假设我们有一个名为example.txt的文本文件,其中包含以下内容: ``` The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy cat. The quick brown fox jumps over the lazy bird. ``` 现在,我们想要将所有的“fox”替换为“dog”,我们可以使用以下命令: ``` sed 's/fox/dog/g' example.txt ``` 这个命令中的s表示替换(substitute),/fox/表示要被替换字符串,/dog/表示替换成的字符串,g表示全局匹配。 如果我们只想替换第二行中的“fox”,我们可以使用以下命令: ``` sed '2s/fox/dog/' example.txt ``` 这个命令中的2s表示只替换第二行,其他部分与上面的命令相同。 接下来是一个使用grep命令查找字符串的示例: 假设我们有一个名为example.txt的文本文件,其中包含以下内容: ``` The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy cat. The quick brown fox jumps over the lazy bird. ``` 现在,我们想要查找包含“cat”的所有行,我们可以使用以下命令: ``` grep 'cat' example.txt ``` 这个命令将返回包含“cat”的所有行。 如果我们想要查找包含“cat”的所有行,我们可以使用以下命令: ``` grep -v 'cat' example.txt ``` 这个命令中的-v表示反向匹配,即匹配不包含“cat”的所有行。 总之,sed和grep是非常强大的命令行工具,可以用于快速替换查找字符串。在日常工作中,我们可以充分利用它们来提高工作效率。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值