2017-01-18 50 views
2

我想在awk中連接兩個字符串。其中一人似乎包含了「\ r」:如何刪除awk中的轉義字符?

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

結果

Hillo 

我能做些什麼,以刪除「\ r」如果我不能改變stringA的來源是什麼?

謝謝:)

+0

狂猜 - 字符串A正在通過讀取文件的內容來填充。如果是這樣,只需在運行awk或運行gawk之前在該輸入文件上運行dos2unix或類似命令,然後設置RS ='\ r?\ n''或運行'sub(/ \ r /,「」) '在每個輸入行或... –

回答

0

考慮:

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

只需更換回車\rgsub()

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

也就是說,gsub(/\r$/,"",s1)將查找\r在字符串的結尾s1並用""代替它,也就是說,它它。

如果出現多個回車符,只需排除$,這樣它就不會匹配行尾的符號。

Ed Morton在評論中建議,可能只有一個回車符會出現在一個字符串中,這很合理。如果是這種情況,只需使用sub()代替:sub(/\r$/,"",s1)

+1

謝謝你,幫了很多:) –