![패턴과 일치하는 지정된 줄 번호의 줄만 삭제하려면 어떻게 해야 합니까? [복사]](https://linux55.com/image/95626/%ED%8C%A8%ED%84%B4%EA%B3%BC%20%EC%9D%BC%EC%B9%98%ED%95%98%EB%8A%94%20%EC%A7%80%EC%A0%95%EB%90%9C%20%EC%A4%84%20%EB%B2%88%ED%98%B8%EC%9D%98%20%EC%A4%84%EB%A7%8C%20%EC%82%AD%EC%A0%9C%ED%95%98%EB%A0%A4%EB%A9%B4%20%EC%96%B4%EB%96%BB%EA%B2%8C%20%ED%95%B4%EC%95%BC%20%ED%95%A9%EB%8B%88%EA%B9%8C%3F%20%5B%EB%B3%B5%EC%82%AC%5D.png)
패턴과 일치하는 지정된 줄 번호의 줄만 삭제하려면 어떻게 해야 합니까?
예를 들어:
- 나는 원해요삭제(
d
); - 이것제삼와이어(
3
); - 그렇다면공백(
^$
);
구문은 다음과 같습니다.
cat file | sed '3 /^$/d'
다음 오류가 반환됩니다.
sed: -e expression #1, char 3: unknown command: `/'
답변1
이 시도:
sed '3{/^$/d;}' file
중괄호에 주목하세요.
답변2
user000001이 답변한 것처럼 sed '3{/^$/d;}' file
충분하지만 해당 출력만 표시됩니다. 이 파일을 수정하고 싶고 시스템이 sed
GNU 라면 sed
이를 사용할 수 있습니다 sed -i '3{/^$/d}' file
(GNU 의 경우 sed
이전 ;
파일 }
도 생략 가능).
`-i[SUFFIX]' `--in-place[=SUFFIX]' This option specifies that files are to be edited in-place. GNU `sed' does this by creating a temporary file and sending output to this file rather than to the standard output.(1).
FreeBSD/OS/X의 sed
경우 sed -i '' '3{/^$/d;}' file
.