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-