Sed 명령은 46줄마다 파일의 1행과 14행을 인쇄합니다.

Sed 명령은 46줄마다 파일의 1행과 14행을 인쇄합니다.

따라서 텍스트 파일을 구문 분석하고 1행과 14행을 인쇄한 다음 15-46행에서는 아무 작업도 수행하지 않고 47행과 60행을 인쇄하는 식으로 파일 끝까지 인쇄합니다. 따라서 기본적으로 46줄마다 1행과 14행을 인쇄하고 EOF까지 46행마다 반복합니다.

답변1

GNU sed 사용첫걸음 ~ 첫걸음주소 범위 확장:

sed -n '1~46p; 14~46p;' file

답변2

awk태그에 해당 내용이 있으므로 해결 방법을 제공 하겠습니다 awk.

awk '(NR%46==1||NR%46==14){print}' file

답변3

POSIX가 작동하지 않았습니다 sed.

sed 'H;1h;$!d;x;y/\n#/#\n/;s/\(#[^#]*\)\{12\}#\([^#]*\)\([^#]*#\)\{33\}/#\2##/g;s/\(.*\)##.*/\1/;s/##/#/g;y/\n#/#\n/'

sed다른 도구가 더 적합할 때 이러한 작업에 일반 POSIX를 사용하는 것은 의미가 없다고 생각하지만, 실제 작업에 필요할 수 있는 몇 가지 유용한 요소가 여기에 있으므로 설명을 추가하겠습니다.

  • H;1h;$!d;x패턴 공간에서 전체 파일을 수집하는 패턴으로, 종종 유용합니다(GNU에서는 sedoptions 로 대체할 수 있습니다 -z). 어떻게 작동하는지 알아낼 수 있습니다.
  • y/\n#/#\n/개행 문자를 다른 문자(이 경우 #)로 바꿉니다. "개행 문자를 제외한 모든 문자"와 같은 표현이 필요한 경우 해결 방법으로 처리 전후에 이 작업을 수행하세요. 다시 말하지만 GNU 에서는 허용되기 sed때문에 GNU에서는 필요하지 않습니다 .[^\n]
  • 명령의 이상한 패턴은 줄 내용인 s12+1+33=46 #(이전 줄 바꿈) 및 45 와 일치합니다. [^#]*모든 행은 변경되지 않고 유지되며, 12개 행이 삭제되고, 1개 행이 유지되고, \233개 행이 삭제됩니다. 이는 전 세계적으로 수행됩니다. 이 ##작업은 후행 줄을 제거하기 위해 수행됩니다.

관련 정보