我有一个文件' abc.txt'具有以下格式。
+test1_app1 +o_test = /bin/su - user1
+test1_app1 +ae_test1d = /bin/su - user2
+test2_app +e_hd = /bin/su - user1
+crd_app +er_sd = /bin/su - user2
+rod_app +eo_tsd = /bin/su - user1
+rod_app +eo_tsd = /bin/su - user3
我喜欢搜索特定用户,然后使用不同格式写入同一文件
对于user1,它应该用下面的方法更改相同的文件abc.txt。请注意我正在从passwd阅读用户列表。
+test1_app1 +o_test = (user1) ALL
+test1_app1 +ae_test1d = /bin/su - user2
+test2_app +e_hd = (user1) ALL
+crd_app +er_sd = /bin/su - user2
+rod_app +eo_tsd = (user1) ALL
+rod_app +eo_tsd = /bin/su - user3
passwd文件包含user1,user2,user3等所有用户
这是我到目前为止所写的:
import fileinput
s=open('/etc/passwd','r')
for i in s:
if 'user' in i:
for line in fileinput.input('/tmp/abc.txt', inplace = 1):
print line.replace(i.split(':')[0], "????")
我不认为我可以通过line.replace实现这一点。我可能需要使用re.sub?如何使用re.sub?我相信你可以将它们组合在一起" \ 1"什么?
有人可以帮忙吗?
非常感谢
答案 0 :(得分:0)
我不认为我可以通过line.replace实现这一点。我可能需要使用re.sub?
这部分你错了。您可以使用str.replace()
作为:
line = line.replace('/bin/su - user1', '(user1) ALL')
用于更改user1
的格式。如果您有list
形式的多个用户。迭代用户列表并执行此操作。
re.sub()
), user<some_num>
会非常有用。但对于单个用户,str.replace()
是更好的选择