특수 문자 검색 및 제거

특수 문자 검색 및 제거

내 DDL 파일에 다음 문자열이 있는데 마지막 )문자를 제거하고 싶습니다.

DDL에는 )이 문자가 여러 곳에 있지만 아래에 지적한 부분만 제거하고 싶습니다.

..
`event_sts` string,
  `rsn_code` string)
ROW FORMAT DELIMITED
  FIELDS TERMINATED BY '|'
ESCAPED BY '\\\\')                     <----- here
STORED AS INPUTFORMAT
  'org.apache.hadoop.hive.ql.io.orc.OrcInputFormat'

sed를 사용해 보았지만 어떻게 든 작동하지 않습니다.

참고: 동일한 요구 사항을 가진 DDL이 많기 때문에 "(" 발생은 정적이지 않습니다.

답변1

그러면 다음을 )포함하는 줄에서 모든 내용이 제거 됩니다 ESCAPED.

sed '/ESCAPED/s/)//g' filename

현재 위치에서 파일을 변경하려면:

sed -i.bak '/ESCAPED/s/)//g' filename

어떻게 작동하나요?

  • /ESCAPED/

    가 포함된 행만 선택됩니다 ESCAPED.

  • s/)//g

    선택한 행의 경우 모두 삭제됩니다 ).

    substutute 명령은 일반적으로 s/old/new/정규식을 찾아 old로 바꾸는 것처럼 보입니다 new. 우리의 경우 oldis )newis는 빈 문자열입니다. 따라서 )삭제되었습니다. g명령 끝에서 sed는 )처음뿐만 아니라 줄이 나타날 때마다 이 작업을 수행하도록 지시합니다.

관련 정보