如何替换bash中的特殊字符

SaK*_*Ker 1 bash awk sed

我有两个问题。我有这样的输入

foo.o
bar.o
Run Code Online (Sandbox Code Playgroud)

我需要用我选择的字符替换点(在这种情况下它是“D”),我需要在每行的末尾附加“]。

我知道如何用 awk 附加 ]

awk '{print $0"]"}' 
Run Code Online (Sandbox Code Playgroud)

但我也不知道如何添加 " ,我的简单尝试是

  awk '{print $0""]"}' 
Run Code Online (Sandbox Code Playgroud)

但正如预期的那样不起作用。

另外我根本不知道如何替换点。

谢谢你的帮助。

dev*_*ull 5

.是一个正则表达式元字符。把它放在一个字符类中:

awk '{gsub("[.]", "D", $0)}{print $0"]"}'
Run Code Online (Sandbox Code Playgroud)

双重逃脱它:

awk '{gsub("\\.", "D", $0)}{print $0"]"}'
Run Code Online (Sandbox Code Playgroud)

要添加引号,请将其转义。为了添加"],请说:

print $0"\"]"
Run Code Online (Sandbox Code Playgroud)