저는 실제로 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에서의 구현은 sed
FreeBSD 구현 또는 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
실행되지 않음을 의미합니다.