2017-09-25 1 views
0

다음 문자가 임의로 입력되며 필드는 ~ $ ~로 구분되고 @ # &으로 끝납니다.문자열에서 줄 바꿈 문제에 대한 해결책이 필요합니다.

점선을 하나로 합치도록 도와주세요. 아래 문자열에서

입력 문자는 주소 필드에 발생 (4/79A)

------- 스팅 ---------- 23510053 ~ $ ~ ABC ~ $ ~ 4313708 ~ $ 19072017 ~ $ XYZ ~ $ ~ CHINNUSAMY ~ $ ~~ $ ~ R ~ $ ~~ $ ~~ $ ~~ $ ~ 42 ~ $ ~~ $ ~~ $ ~~ $ ~~ $ ~ 28022017 ~ $ ~ 4/79A PQR 마그, 뭄바이 # & @ 4000001 ~ $ ~ TN ~ $ ~ 637,301 ~ $ ~ 소유 ~ $ ~ RAT ~ $ ~ 31,102,015 ~ $ ~ 12,345 ~ $ ~

미리 감사한다. Rupesh

+0

AIX 서버와 인포매티카를 사용하여 파일을 대상으로로드하고 있습니다. – user4786658

답변

0

가 (자세한 이하) https://stackoverflow.com/a/802439/3595749

주의 중복 것 같다, 당신은 (오히려 아래 코드를 aplying보다)에 CRLF 표시를 제거하려면 클라이언트에 요청해야합니다.

그럼에도 불구하고

,이 시도 :

cat inputfile | tr -d '\n' | sed 's/@#&/@#\&\n/g' >outputfile 

설명 :

  • tr은 캐리지 리턴을 제거하는 것입니다,
  • sed
  • 은 ( @#&이 encountred 경우에만) 다시 추가하는 것입니다. s/@#&/@#\&\n/g은 " @#&"을 " @#&\n"(캐리지 리턴을 추가하고 "&"은 이스케이프해야 함)으로 대체해야합니다. 이것은 전 세계적으로 적용됩니다 (끝에 "g"문자).

참고 : 소스 (Unix 또는 Windows)에 따라 "\r\n"을 "\r\n"으로 바꿔야하는 경우가 있습니다.

+0

친애하는 William, 답장을 보내 주셔서 감사합니다. 이제 내 질문에 내 첫 번째 열에 숫자가 포함되어 있고 동시에 2048/7과 같은 주소가 새 줄 문자 다음에 오는 경우 첫 번째 열을 건드리지 않고 행을 병합하는 방법을 처리해야합니다. 예 : - 23510053 ~ $ ~ ABC ~ $ 4313708 ~ $ 19072017 ~ $ XYZ ~ $ ~ 뭄바이 ~ $ ~ – user4786658

+0

귀하의 의견이 보이지 않습니다. 내 코드는 모든 행을 조인하여 고유 한 행 (tr 명령)을 제공 한 다음 "@ # &"를 찾을 때 sed를 사용하여 잘라냅니다. 숫자와 연결되는 링크가 없습니다 (줄의 시작 부분 또는 끝 부분에 있음). 귀하의 주소는 하나의 필드가됩니다. –

+0

@ # & inside "를 사용하여'echo"문자열을 시도하십시오. sed 's/@ # &/@ # & \ n/g''. 두 번째'&'는 특별한 의미가 있습니다 : 일치하는 모든 것으로 문자를 대체하십시오. 나는 당신이 @ echo를 가진 echo를 원한다고 생각한다. sed 's/@ # &/& n \ g' '. –

관련 문제