String 如何删除awk中的转义字符?
我正试图在awk中连接两个字符串。其中一个似乎包含“\r”: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,并将其替换为“”,
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