패턴과 일치하는 지정된 줄 번호의 줄만 삭제하려면 어떻게 해야 합니까?
예를 들어:
- 나는 원해요삭제(
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
.