如何使用grep及sed命令 搜索目录下的所有文件中的某个字符串,并且将该字符串所在行进行删除或者替换

carl.xu 2020-07-28 04:17:15
大侠:
请教一下
如何使用grep及sed命令 搜索目录下的所有文件中的某个字符串,并且将该字符串所在行进行删除或者替换
...全文
34165 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
carl.xu 2020-08-07
  • 打赏
  • 举报
回复
测试没有问题。。。搜索某个字符串,并且删除有该字符串的行 l=AppLog.info sed -i "/$l/d" `grep -rl $l $dir`* 测试没有问题。。。搜索某个字符串,并且删除有该字符串的行
alittlenewbiek 2020-08-01
  • 打赏
  • 举报
回复
引用 1 楼 wisewoman 的回复:
替换
sed 's/要被取代的字串/新的字串/g' `grep -l 字串 *`
删除
sed '字串/d' `grep -l 字串 *`

大概就是这意思

楼主用这个就可以。

# sed基本语法
sed [OPTION...] [SCRIPT] <files>
# 简单的SCRIPT由address + command两部分组成

# 删除的语法
sed -i[.bak] '/REGEXP/d' $(grep -l <file-regexp-pattern>)
# 基中/REGEXP/是address,用来定位某行
# d是command,表示delete删除

# 所以,sed遍历文件的每一行,如果某行字符匹配上了REGEXP,那么就删除;没有匹配的,就什么也不做

最关键的是把正则表达式写清楚,默认使用的是basic regular expression,需要很多转义字符;
使用-r选项可以使用extended regular expression;
carl.xu 2020-07-28
  • 打赏
  • 举报
回复
请教一下这个命令行不?
carl.xu 2020-07-28
  • 打赏
  • 举报
回复
我是想 查找到满足要求的字符串后,删除这一行
wisewoman 2020-07-28
  • 打赏
  • 举报
回复
替换
sed 's/要被取代的字串/新的字串/g' `grep -l 字串 *`
删除
sed '字串/d' `grep -l 字串 *`

大概就是这意思

19,612

社区成员

发帖
与我相关
我的任务
社区描述
系统使用、管理、维护问题。可以是Ubuntu, Fedora, Unix等等
社区管理员
  • 系统维护与使用区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧