我有这种格式的文件
[file1]
username = admin
password = *****
ips = X.X.X.X
port = 8000
[file2]
username = admin
password = *****
ips = X.X.X.X
port = 8000
我想使用bash脚本修改文件中两个部分的用户名和密码。
我需要的输出是:
[file1]
username = user1
password = user1
ips = X.X.X.X
port = 8000
[file2]
username = user2
password = user2
ips = X.X.X.X
port = 8000
这是我尝试过的sed
命令:
sed 's/username = admin/username = user1/' file [file1] username = user1 password = ***** ips = X.X.X.X port = 8000 [file2] username = user1 password = ***** ips = X.X.X.X port = 8000
我正在尝试使用sed命令来实现此目的,但是它会找到并替换所有具有相同值的用户名和密码。谁能帮我解决这个问题?
sed 's/username = admin/username = user1/' x
[file1]
username = user1
password = *****
ips = X.X.X.X
port = 8000
[file2]
username = user1
password = *****
ips = X.X.X.X
port = 8000
提前感谢您的帮助!
-W
答案 0 :(得分:1)
请您尝试以下。
解决方案第一: :从行中的file
字符串中提取数字,然后将其添加到user
和password
字符串中行。
awk '/file/{val=$0;gsub(/[a-zA-Z]|+|\[|\]/,"",val)} /^user/||/^password/{$NF="user"val} 1' Input_file
解决方案第二: 在这种方法中,仅具有一个变量count
,每次看到{{1}时该变量就会增加1
。 }字符串。
file
如果要将输出保存到Input_file本身,请在上述代码中附加awk '/file/{count++} /^user/||/^password/{$NF="user"count} 1' Input_file
。