내 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
. 우리의 경우old
is)
및new
is는 빈 문자열입니다. 따라서)
삭제되었습니다.g
명령 끝에서 sed는)
처음뿐만 아니라 줄이 나타날 때마다 이 작업을 수행하도록 지시합니다.