2017-01-18 7 views
2

awk에서 두 문자열을 연결하려고합니다. 그 중 하나는 '\ r에'포함 할 것 같다awk에서 이스케이프 문자를 제거하는 방법은 무엇입니까?

Hillo 

에서

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

결과를 내가 stringA의 소스를 변경할 수없는 경우 '\ r에'를 제거하기 위해 무엇을 할 수 있는가?

감사합니다 :)

+0

야생 추측 - 문자열 A는 파일의 내용을 읽음으로써 채워집니다. 그렇다면, awk를 실행하기 전에 입력 파일에서 dos2unix 또는 비슷한 것을 실행하거나 gawk를 사용하고 있다면'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이며 ""으로 바꿉니다. 즉, remo 그것을 ves.

캐리지 리턴이 여러 개 나타나는 경우 $을 제거하면 줄 끝에있는 것과 일치하지 않습니다.

에드 모튼 (Ed Morton)은 코멘트에서 하나의 캐리지 리턴이 문자열에 표시 될 것이라고 제안합니다. 이는 상당히 합리적입니다. 이 경우 sub(/\r$/,"",s1) 대신 sub()을 사용하면됩니다.

+1

감사합니다, 많이 도움이 :) –

관련 문제