如何删除awk中的转义字符?

How to remove escape character in awk?

我正在尝试在 awk 中连接两个字符串。其中一个似乎包含 '\r':

stringA = "Hello\r"
stringB = "Hi"
print stringA stringB

结果

Hillo

如果我无法更改 stringA 的来源,我该如何删除'\r'?

谢谢:)

给定:

$ awk 'BEGIN {s1="Hello\r"; s2="Hi"; print s1 s2}'
Hillo

把回车return\r换成gsub()就可以了:

$ awk 'BEGIN {s1="Hello\r"; s2="Hi"; gsub(/\r$/,"",s1); print s1 s2}'
HelloHi

gsub(/\r$/,"",s1)寻找字符串s1末尾的\r并用""替换,即删除。

如果出现多个回车return,只需去掉$,这样它就不会只匹配行尾的

Ed Morton 在评论中建议可能只有一个回车 return 会出现在一个字符串中,这是很合理的。如果是这种情况,只需使用 sub() 代替:sub(/\r$/,"",s1).