关于替换文本文件中的字符的问题

关于替换文本文件中的字符的问题

所以我有一些以冒号分隔的格式解析的数据:

username:[email protected]:password:salt

有时,用户名/盐可以包含冒号 (:)。我想用不同的字符替换分隔符,因此数据将如下所示:

username', '[email protected]', 'password', 'salt

我正在使用这个命令:

sed "s/:/'/" filename.txt > newfile.txt

但我想不出一种方法来跳过用户名/盐字段中的冒号。有任何想法吗?

答案1

文件内容:

用户名:[电子邮件受保护]:密码:盐
用户名:[电子邮件受保护]:密码:盐
用户名:[电子邮件受保护]:密码:sa:lt
用户名:[电子邮件受保护]:密码:sa:lt

使用 GNU sed:

sed -E "s/(.*):([^:]*@[^:]*):([^:]*):(.*)/\1', '\2', '\3', '\4/" file

输出:

用户名', '[电子邮件受保护]', '密码', '盐
用户名', '[电子邮件受保护]', '密码', '盐
用户名', '[电子邮件受保护]', '密码', 'sa:lt
用户名', '[电子邮件受保护]', '密码', 'sa:lt

相关内容