다음과 같은 줄이 포함된 텍스트 파일이 있습니다.
SET @@GLOBAL.GTID_PURGED='abae51b1-e1dc-11e8-bfd0-5665b72f6318:1-12559259';
sed를 사용하여 해당 줄을 삭제하고 싶습니다. 문자열(예: GTID_PURGED
)을 일치시킬 수 있지만 세미콜론( ) 앞의 나머지 문자열과 일치하지 않기 때문에 부분적으로 작동하도록 했습니다 ;
.이것은 내 정규식입니다.:
(SET @@GLOBAL.GTID_PURGED=.*?\;)
이것은 오류를 생성하는 완전한 명령입니다.
sed -i 's/(SET @@GLOBAL.GTID_PURGED=.*?\;)/' test.sql
답변1
이 줄을 삭제하고 싶어요
s/pattern/replacement/
sed
패턴을 교체로 바꾸는 명령 입니다 . 그러나 당신은 대체물을 제공하지 않습니다.
행을 삭제하려면 가 필요합니다 sed -i '/pattern/d'
.
추가 팁:
- 와 함께 확장 정규 표현식을 사용하지 않는 한
sed
괄호를 이스케이프해야 합니다. 삭제 명령의 경우 대괄호는 쓸모가 없으므로 제거해야 합니다. - posix 정규식은 non-greedy 수정자( )에 대해 알지 못합니다
?
. 은 (는) 특수 문자가 아니므로 이스케이프할 필요 가.*;
없습니다 .[^;]*;
.*?\;
;
답변2
s
/
일치 항목을 바꾸는 데 사용되며 예제의 마지막 문자열 뒤에 대체 문자열이 없습니다.
해당 줄만 삭제하려면 처음 d
이 아닌 끝 부분에서 사용하세요 .s
sed -i '/match/d' filename