오류: 잘못된 명령 코드 ~

오류: 잘못된 명령 코드 ~

저는 실제로 Notes.txt에서 1,4,7,10,13..... 행을 인쇄하기 위해 다음 명령을 실행하는 sed 명령 튜토리얼을 따르고 있습니다. MAC 단말기를 사용하고 있습니다

sed -n '1~3p' Notes.txt

위 명령을 실행하는 동안 다음 문제에 직면했습니다. 어떤 도움이라도 더 감사하겠습니다.

sed: 1: "1~3p": invalid command code ~

答え1

범위 ADDR1,~N주소 구문은 다음과 같습니다.GNU 구현으로 도입된 비표준 확장sed. Macos에서의 구현은 sedFreeBSD 구현 또는 FreeBSD에서 파생된 구현이며 이 확장을 지원하지 않습니다.

그러나 대신 다음 perl을 사용할 수 있습니다 awk.

perl -ne 'print if $. % 3 == 1'
awk 'NR % 3 == 1'

표준 sed구문을 사용하여 다음을 수행할 수도 있습니다.

sed -n 'p;n;n'

각 줄마다 인쇄 n;n하지 않고 2줄을 소비합니다 .p

또한보십시오:

sed -n 'N;N;P'

N마지막 두 줄을 패턴 공간으로 가져온 다음 첫 P번째 줄을 인쇄합니다.

입력 행 수가 3의 배수가 아닌 경우 동작이 다릅니다.

$ seq 10 | sed -n 'p;n;n'
1
4
7
10
$ seq 10 | sed -n 'N;N;P'
1
4
7

라인 10에 도달 하면 N실패로 인해 sed종료되며 이는 P실행되지 않음을 의미합니다.

関連情報