행에 포함된 줄 뒤의 모든 줄을 삭제하시겠습니까? [복사]

행에 포함된 줄 뒤의 모든 줄을 삭제하시겠습니까? [복사]

특정 줄 뒤의 모든 줄을 삭제하려는 스크립트가 있습니다.

명령이 있는데 파일 전체가 지워지나요?

sed -n '/twm &/q;p' ~/.xinitrc > ~/.xinitrc

변환은 다음과 같습니다.

some line
another line


some other line
twm &
more lines to be deleted
and more

도착하다

some line
another line


some other line

답변1

상위 프로세스(쉘)가 리디렉션을 설정하므로앞으로명령 이 실행된 sed> ~/.xinitrc파일을 읽기 전에 파일이 지워집니다.

읽고 man sed다음과 같은 일을 해보세요테스트되지 않은:

sed -i.bak  -e "/twm \&/,\$d" ~/.xinintc

이것은 에 있을 것입니다 ~/.xinitrc.bak.

관련 정보