몇 줄의 파일이 있습니다.
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
awk
var를 사용하세요 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