파일의 줄 범위

파일의 줄 범위

몇 줄의 파일이 있습니다.

  C   1.31729690416596     -0.05166770188922      0.05026556004853
  C   2.15676687192808     -0.87605403673920      0.93010807487406
  C   1.45516592682388     -0.49804136618225     -1.24011085742027
  C   2.67489108786199     -2.06116694592319      0.09667460087481
  C   2.24626744432148     -1.81826783081380     -1.24626795859707
  C   0.12278380551129     -0.78127661791244     -1.79035714840462
  C   0.11627012096698     -2.05095769577445     -2.31049614254010
  C   1.41908665901196     -2.77247309785857     -1.91624359298119

한 번의 작업으로 복잡한 일련의 줄을 인쇄해야 합니다. 즉, 1행과 4~7행(1,4-7)을 인쇄해야 합니다. 행별로 검색하는 대신 이러한 행을 어떻게 얻을 수 있습니까?

답변1

ed라인 편집기:

printf '%s\n' '1p' {4..7}p 'Q' | ed -s - file

awk:

printf 'NR==%d\n' 1 {4..7} | awk -f - file 

sed스트림 편집기:

printf '%sp\n' 1 4,7 | sed -nf - file

perl:

perl -lne 'print if grep { $_ == $. } (1, 4..7)' file

답변2

awkvar를 사용하세요 NR:


awk 'NR == 1 ||  NR >= 4 && NR <= 7' file
  C   1.31729690416596     -0.05166770188922      0.05026556004853
  C   2.67489108786199     -2.06116694592319      0.09667460087481
  C   2.24626744432148     -1.81826783081380     -1.24626795859707
  C   0.12278380551129     -0.78127661791244     -1.79035714840462
  C   0.11627012096698     -2.05095769577445     -2.31049614254010

답변3

주문하다

sed -n -e '1p' -e '4,7p' filename

산출

 C   1.31729690416596     -0.05166770188922      0.05026556004853
  C   2.67489108786199     -2.06116694592319      0.09667460087481
  C   2.24626744432148     -1.81826783081380     -1.24626795859707
  C   0.12278380551129     -0.78127661791244     -1.79035714840462
  C   0.11627012096698     -2.05095769577445     -2.31049614254010

관련 정보