【问题标题】:How to remove escape character in awk?如何在awk中删除转义字符?
【发布时间】:2017-06-02 19:55:48
【问题描述】:

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

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

结果

Hillo

如果我无法更改 stringA 的来源,我该怎么做才能删除 '\r'?

谢谢:)

【问题讨论】:

  • 疯狂猜测 - stringA 正在通过读取文件的内容来填充。如果是这样,在运行 awk 之前在该输入文件上运行 dos2unix 或类似文件,或者如果您使用 gawk 然后在每个输入行上设置 RS='\r?\n' 或运行 sub(/\r/,"") 或....

标签: string awk replace concat


【解决方案1】:

给定:

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

只需将回车\r替换为gsub()即可:

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

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

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

Ed Morton 建议在 cmets 中可能只有一个回车符会出现在一个字符串中,这是非常合理的。如果是这种情况,请改用sub()sub(/\r$/,"",s1)

【讨论】:

    猜你喜欢
    • 2018-01-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-19
    • 1970-01-01
    • 2017-11-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多