잘못된 sed 명령이 실행되었습니다. 모든 소스 코드 파일이 엉망입니다.

잘못된 sed 명령이 실행되었습니다. 모든 소스 코드 파일이 엉망입니다.

기본적으로 나는 이것을 실행했습니다.

sed -i '/s/icap_infos/icap_servers/g' *

대신에:

sed -i 's/icap_infos/icap_servers/g' *

명령에서 "s" 앞에 슬래시가 있는 것을 확인하세요.

이제 내 모든 소스 파일에는 파일 전체에 이상한 텍스트 문자열이 흩어져 있습니다. 어떻게 해결할 수 있나요?

답변1

/s/문자가 포함된 모든 줄과 일치하는 정규식 주소입니다 s. GNU sed에서 itext표준 확장

i\
text

저것text지정된 줄 뒤에 삽입합니다. 따라서 명령은 cap_infos/icap_servers/g모든 s.

원본 파일에 그러한 파일이 없다고 가정하면 다음을 사용할 수 있습니다.

sed -i.old '\:^cap_infos/icap_servers/g$:d' *

도착하다엘레테 라인이 cap_infos/icap_servers/g정확히 일치합니다. 패턴 자체에 기본 구분 기호가 포함되어 있으므로 :대체 구분 기호( 에서 도입됨)를 사용하는 것에 유의하세요 . 현재 파일이 작동하지 않아 다른 것을 시도해야 할 경우를 대비해 접미사를 붙여 백업됩니다 .\:/.old

앞으로는 sed 명령을 건조하게 실행하는 습관을 들이세요아니요 -i먼저 백업을 만들고/하거나 -i.bak일반 대신 사용하세요 -i.

답변2

은 주소로 해석 되므로 /s/다음 명령은 포함에만 적용됩니다 s. 다음 명령은 i다음 텍스트를 삽입합니다 cap_infos/icap_servers/g.

해야 할 세 가지:

  1. cap_infos/icap_servers/g의도적 으로 행만 포함했을 가능성은 거의 없으므로 sed '/^cap_infos\/icap_servers\/g$/d'다음을 사용하여 행을 제거할 수 있습니다.주소뭔가 삭제하세요 d)
  2. 예상되는 변화를 만들어라
  3. -i나중에 옵션을 사용하기 전에 항상 변경 사항을 확인하는 방법을 알아보세요.

관련 정보