我想将fw["
替换为fw.
。
我尝试了几个sed
命令,但无法解决问题。
我尝试了cut
命令,tr
和sed
命令。但由于我喜欢替换的字符是特殊字符,因此我会遇到很多错误。
这是我的意见:
endpoint.os.version="Windows 10"
endpoint.fw["MSWindowsFW"].version="10.0"
endpoint.av["AlwilAV"].version="11.1.2253"
endpoint.os.hotfix["KB3116278"]="true"
这是我想要的输出:
endpoint.os.version="Windows 10"
endpoint.fw.MSWindowsFW.version="10.0"
endpoint.av["AlwilAV"].version="11.1.2253"
endpoint.os.hotfix["KB3116278"]="true"
你能帮我写一个这样的变换吗?
答案 0 :(得分:1)
假设file.txt
:
endpoint.os.version="Windows 10"
endpoint.fw["MSWindowsFW"].version="10.0"
endpoint.av["AlwilAV"].version="11.1.2253"
endpoint.os.hotfix["KB3116278"]="true"
作为POSIX regular expressions are greedy,您可以使用Perl执行此操作:
perl -pe 's/fw\["(.*?)"\]/fw.\1/g' file.txt
或纯粹的sed:
sed 's/fw\["\([^"]*\)"\]/fw.\1/g' file.txt
注意:我建议您使用https://regex101.com/或https://www.debuggex.com/来测试,可视化和理解正则表达式的作用。
否则,对于你的问题,你只需要避免使用"特殊字符"由你的shell解释;在我的示例中,我将它们放在单引号之间,但您可以将它们转义(即:tr -d \[\"
等同于tr -d '["'
)。