首页 新闻 赞助 找找看

关于linux中文本进行批量替换的问题,麻烦大佬们看到了帮忙出个大招

0
悬赏园豆:5 [待解决问题]

需求:替换文本中重复字符串的一个为新值。
例如:1.txt中如下内容:
[a]
db_database = db1
db_host = 127.0.0.1
db_port = 3306
db_user = test
db_pass = test

[b]
db_database = db2
db_host = 127.0.0.1
db_port = 3306
db_user = test
db_pass = test1

[c]
db_database = db3
db_host = 127.0.0.1
db_port = 3306
db_user = test
db_pass = test2

如上,需要更改第三部分中db_user=abc,但是该文本中有三个db_user,并且值都为test,但是想更改第三个中的db_user=test1。由于该文件有几百个,并且该值在不指定的行,所以请大佬们给个解决方案。

沐雨&清杺的主页 沐雨&清杺 | 初学一级 | 园豆:120
提问于:2020-06-05 10:59
< >
分享
所有回答(3)
0

做个批量,用sed命令修改

yytxdy | 园豆:1680 (小虾三级) | 2020-06-05 11:04

大佬,能否给出个详细的答案

支持(0) 反对(0) 沐雨&清杺 | 园豆:120 (初学一级) | 2020-06-05 11:05

sed中只能针对指定行、指定范围、指定的值进行修改,无法对重复出现的值做修改。

支持(0) 反对(0) 沐雨&清杺 | 园豆:120 (初学一级) | 2020-06-05 11:06

@沐雨&清杺: 看看这个https://www.jianshu.com/p/a2a50575e338

支持(0) 反对(0) yytxdy | 园豆:1680 (小虾三级) | 2020-06-05 11:06

@yytxdy: 谢谢您,这个行不通,这个是更改的值是文本中唯一值的,但是我的需求是这个文本中有多个相同的,只想更改其中的一个值。

支持(0) 反对(0) 沐雨&清杺 | 园豆:120 (初学一级) | 2020-06-05 11:09
0

你这个第三个是以什么为标识的?就是索引是2?还是说上面的c?

顾晓北 | 园豆:10844 (专家六级) | 2020-06-05 11:16

您好!说的是c。

支持(0) 反对(0) 沐雨&清杺 | 园豆:120 (初学一级) | 2020-06-05 11:21
0

你不是都说出来逻辑了,还有啥问题呢。
如果是第三个,那就跳过两个,修改第三个。
如果是C,那就找到C。

总是有个唯一性条件的,把这个唯一性条件写成代码就行了。

  • 但是我的需求是这个文本中有多个相同的,只想更改其中的一个值。*
    你想修改其中哪一个值,你应该有个判断标准,这个标准换成代码就可以了。
爱编程的大叔 | 园豆:30839 (高人七级) | 2020-06-05 12:33

麻烦请问下大佬,如果用shell该用什么方法实现这个唯一性的条件,我想了一些办法,但是没办法实现。

支持(0) 反对(0) 沐雨&清杺 | 园豆:120 (初学一级) | 2020-06-05 12:36

@沐雨&清杺:
shell 一样有
判断
循环
这些语句啊,
如果不熟悉 shell 命令写法,就换 python 呗。
linux 下 python 基本也是默认有的。

支持(0) 反对(0) 爱编程的大叔 | 园豆:30839 (高人七级) | 2020-06-05 12:42
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册