全球主机交流论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

CeraNetworks网络延迟测速工具IP归属甄别会员请立即修改密码
查看: 1049|回复: 21

shell脚本求助

[复制链接]
发表于 2021-4-18 14:53:46 | 显示全部楼层 |阅读模式
在一个目录下有多个文件,例如/123/*.conf
能不能批量对这些.conf判断是否包含字段“abcd”
不包含“abcd”则继续替换文本内容“wwwrrr”为“rrrwww”

就是所有的.conf不包含“abcd”的,都做替换,包含的不做。。。

写了半天,都有问题,求助大佬。。。
发表于 2021-4-18 14:59:32 来自手机 | 显示全部楼层
建议有偿求助 比如10块
 楼主| 发表于 2021-4-18 15:14:04 | 显示全部楼层
tanpengsccd 发表于 2021-4-18 14:59
建议有偿求助 比如10块

10.1
发表于 2021-4-18 15:14:21 来自手机 | 显示全部楼层
grep -v 然后 sed 替换就行
 楼主| 发表于 2021-4-18 15:18:51 | 显示全部楼层
rcdfrd 发表于 2021-4-18 15:14
grep -v 然后 sed 替换就行

不成功啊。。。。grep -v貌似echo文件都不对,反而grep能echo到对应文件。。。
发表于 2021-4-18 15:25:37 | 显示全部楼层
本帖最后由 yuqaf1989 于 2021-4-18 15:27 编辑

for f in `ls /1/2/3/*.conf`
do
  lines=$(cat ${f} | grep -c abcd)
  if [ lines -eq 0 ];
  then
    sed  //替换
  fi
done


发表于 2021-4-18 15:32:27 来自手机 | 显示全部楼层
本帖最后由 tinyfish 于 2021-4-18 15:39 编辑

编辑掉:手机提前回帖
发表于 2021-4-18 15:34:32 来自手机 | 显示全部楼层
grep -v abcd 是所有不包含abcd的行。grep -q -m1 abcd 文件路径 || sed 处理,外部循环如楼上
 楼主| 发表于 2021-4-18 15:37:55 | 显示全部楼层
yuqaf1989 发表于 2021-4-18 15:25
for f in `ls /1/2/3/*.conf`
do
  lines=$(cat ${f} | grep -c abcd)

[: lines: integer expression expected
 楼主| 发表于 2021-4-18 16:01:39 | 显示全部楼层
貌似都有问题
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|全球主机交流论坛

GMT+8, 2024-3-29 22:44 , Processed in 0.063549 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表