패턴과 일치하는 지정된 줄 번호의 줄만 삭제하려면 어떻게 해야 합니까? [복사]

패턴과 일치하는 지정된 줄 번호의 줄만 삭제하려면 어떻게 해야 합니까? [복사]

패턴과 일치하는 지정된 줄 번호의 줄만 삭제하려면 어떻게 해야 합니까?


예를 들어:

  • 나는 원해요삭제( 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충분하지만 해당 출력만 표시됩니다. 이 파일을 수정하고 싶고 시스템이 sedGNU 라면 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.

관련 정보