Debian Linux에서 sed 명령을 사용하여 파일의 줄 삭제

Debian Linux에서 sed 명령을 사용하여 파일의 줄 삭제

Linux에서 sed 명령을 사용하여 단일 파일의 줄을 삭제하는 방법을 알고 있는지 묻고 싶습니다.

예를 들어 다음 파일이 있습니다.

       something
       something-
       somethingelse

"무언가"가 포함된 모든 줄을 삭제하는 sed 명령을 만들고 싶지만 뭔가가 있는 줄도 삭제하고 싶지 않습니다. "-"와 같은 특정 문자는 어디에 있습니까? 조언해 주셔서 감사합니다.

나는 sed -i "/something/d"와 같은 것을 만들어 보았습니다.

답변1

sed -e '/something[^-]/d' -e '/something$/d' -i "$file"

Philippos가 제안한 더 짧은 내용은 다음과 같습니다.

sed -i '/something\([^-].*\)*$/d' "$file"

답변2

더 중요하게 생각해보자유지하다something-원래보다 긴 행이 포함되어 있습니다 .삭제다음을 포함하는 라인 something:

sed '/something/ { /something-/!d; }' file

이 명령은 해당 문자열을 포함하는 모든 행을 찾아 해당 문자열 something이 포함되어 있지 않은 한 모두 삭제합니다 something-.

시험:

$ cat file
something something blah blah
something something- blah blah
somethingelse
something
something-
$ sed '/something/ { /something-/!d; }' file
something something- blah blah
something-

관련 정보