linux几种常见的文件内容查找和替换命令

1、通过vim编辑器来替换

vi/vim 中可以使用 :s 命令来替换字符串。

:s/well/good/ 替换当前行第一个 well 为 good

:s/well/good/g 替换当前行所有 well 为 good

:n,$s/well/good/ 替换第 n 行开始到最后一行中每一行的第一个 well 为 good

:n,$s/well/good/g 替换第 n 行开始到最后一行中每一行所有 well 为 good n 为数字,若 n 为 .,表示从当前行开始到最后一行

:%s/well/good/(等同于 :g/well/s//good/) 替换每一行的第一个 well 为 good

:%s/well/good/g(等同于 :g/well/s//good/g) 替换每一行中所有 well 为 good 可以使用 # 作为分隔符,此时中间出现的 / 不会作为分隔符

:s#well/#good/# 替换当前行第一个 well/ 为 good/

:%s#/usr/bin#/bin#g 可以把文件中所有路径/usr/bin换成/bin

2、sed和grep配合

sed -i s/yyyy/xxxx/g `grep yyyy -rl --include="*.txt" ./`

作用:将当前目录(包括子目录)中所有txt文件中的yyyy字符串替换为xxxx字符串。其中,

-i 表示操作的是文件,``括起来的grep命令,表示将grep命令的的结果作为操作文件。

s/yyyy/xxxx/表示查找yyyy并替换为xxxx,后面跟g表示一行中有多个yyyy的时候,都替换,而不是仅替换第一个

另外,如果不需要查找子目录,仅需要在当前目录替换,用sed命令就行了,命令如下:sed -i s/xxxx/yyyy/g ./*.txt

3.find命令查找和替换

find -name '要查找的文件名' | xargs perl -pi -e 's|被替换的字符串|替换后的字符串|g'          #查找替换当前目录下包含字符串并进行替换

find -name '*.txt' | xargs perl -pi -e 's|被替换内容|替换内容|g'             #递归查找替换

find . -type f -name '*.html' | xargs perl -pi -e 's|被替换内容|替换内容|g'
### Linux 中用于在文件内搜索内容命令 #### grep 命令 `grep` 是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并将匹配行打印出来。基本格式如下: ```bash [root@localhost ~]# grep "search_pattern" filename.txt ``` 此命令会在 `filename.txt` 文件查找包含 `"search_pattern"` 的所有行。 #### sed 命令 `sed` (Stream Editor) 不仅可以用来编辑文本流或文件中的文本,还可以进行复杂的文本操作,包括替换、删除、插入等。对于简单的搜索功能而言,其用法类似于 `grep`: ```bash [root@localhost ~]# sed -n '/search_pattern/p' filename.txt ``` 上述命令会筛选并显示含有特定模式的所有行。 #### awk 命令 `awk` 是由 Aho Weiberger Kernighan 开发的一种语言解析引擎,在 Linux 下既作为一个命令也作为一种具备完整编程特性的工具存在[^2]。它的基础结构允许用户定义模式动作来处理数据记录。当涉及到文件内的字符串定位时,可以通过指定条件来进行过滤: ```bash [root@localhost ~]# awk '/search_pattern/ {print}' filename.txt ``` 这段代码表示如果某一行包含了给定的搜索模式,则输出该整行的内容[^1]。 此外,`awk` 还支持更复杂的数据处理逻辑,例如统计词频或者基于字段的操作等[^4]。 ### 实际应用案例 假设有一个名为 `example.log` 日志文件想要从中提取出所有的错误信息(假定每条日志都以 ERROR 关键字开头),那么可以分别采用以上三种方式实现这一目标: - 使用 `grep`: ```bash [root@localhost ~]# grep "^ERROR" example.log ``` - 使用 `sed`: ```bash [root@localhost ~]# sed -n '/^ERROR/p' example.log ``` - 使用 `awk`: ```bash [root@localhost ~]# awk '/^ERROR/{print}' example.log ``` 这几种方法都能有效地完成相同的工作——即从文件里找到符合条件的信息片段。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值