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

String 如何删除awk中的转义字符?,string,awk,replace,concat,String,Awk,Replace,Concat,我正试图在awk中连接两个字符串。其中一个似乎包含“\r”: stringA = "Hello\r" stringB = "Hi" print stringA stringB 导致 Hillo 如果无法更改stringA的源,我可以如何删除“\r” 谢谢:)给定: $ awk 'BEGIN {s1="Hello\r"; s2="Hi"; print s1 s2}' Hillo 只需将回车符\r替换为: 也就是说,gsub(/\r$/,“”,s1)查找字符串s1末尾的\r,并将其替换为“”,

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

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

Hillo
如果无法更改stringA的源,我可以如何删除“\r”

谢谢:)

给定:

$ awk 'BEGIN {s1="Hello\r"; s2="Hi"; print s1 s2}'
Hillo
只需将回车符
\r
替换为:

也就是说,
gsub(/\r$/,“”,s1)
查找字符串
s1
末尾的
\r
,并将其替换为
“”
,即删除它

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


Ed Morton在评论中建议,一个字符串中可能只出现一个回车符,这是非常合理的。如果是这种情况,只需使用
sub()
即可:
sub(/\r$/,“”,s1)

谢谢,帮助很大:)猜测-stringA是通过读取文件内容来填充的。如果是这样,只需在该输入文件上运行dos2unix或类似程序,然后再在其上运行awk,或者如果您使用的是gawk,则在每个输入行上设置
RS='\r?\n'
或运行
sub(/\r/,“”)
,或。。。。
$ awk 'BEGIN {s1="Hello\r"; s2="Hi"; gsub(/\r$/,"",s1); print s1 s2}'
HelloHi