폴더에 많은 파일이 있고 인쇄하고 싶다고 가정합니다.센터 번호(테이블에 55행이 나타날 때까지 가운데 번호가 매겨진 행 제외) 이러한 여러 파일의 다음 텍스트 블록 또는 테이블입니다.
센터 번호다른 파일에서는 55보다 크거나 작을 수 있습니다. 기본적으로 중앙 번호 1부터 55까지 행을 인쇄하고 싶습니다.
확실하지 않은 경우 알려주십시오.
폴더의 여러 파일에서 테이블을 가져오는 방법을 도와주실 수 있나요?
Standard orientation:
---------------------------------------------------------------------
Center Atomic Atomic Coordinates (Angstroms)
Number Number Type X Y Z
---------------------------------------------------------------------
1 6 0 -1.215837 3.069318 -0.012683
2 6 0 0.000000 3.745098 -0.004581
3 6 0 1.215836 3.069317 -0.012691
4 1 0 0.000000 4.830496 -0.014896
5 6 0 2.560967 1.294763 -0.051815
6 6 0 2.553538 3.571032 -0.074149
7 6 0 3.377990 2.462531 -0.100004
8 1 0 4.457741 2.469234 -0.167815
9 5 0 -0.000001 0.772241 0.246764
10 9 0 -0.000006 -0.297150 -0.651382
11 9 0 0.000002 0.314025 1.553890
12 7 0 1.257033 1.680283 -0.003563
13 7 0 -1.257035 1.680284 -0.003556
14 6 0 -2.560970 1.294765 -0.051802
15 6 0 -3.377991 2.462533 -0.100003
16 6 0 -2.553540 3.571034 -0.074123
17 1 0 -4.457741 2.469236 -0.167825
18 6 0 2.954901 5.014409 -0.124724
19 1 0 2.567267 5.512958 -1.022276
20 1 0 2.579039 5.570960 0.742911
21 1 0 4.044288 5.113616 -0.135637
22 6 0 -2.954903 5.014412 -0.124680
23 1 0 -2.579044 5.570952 0.742963
24 1 0 -2.567265 5.512971 -1.022225
25 1 0 -4.044290 5.113619 -0.135596
26 6 0 -2.954407 -0.091281 -0.068456
27 6 0 -4.239390 -0.514493 0.004248
28 1 0 -2.143544 -0.805389 -0.154218
29 1 0 -5.028393 0.231421 0.091938
30 6 0 2.954406 -0.091282 -0.068458
31 6 0 4.239389 -0.514491 0.004242
32 1 0 2.143544 -0.805392 -0.154206
33 1 0 5.028392 0.231425 0.091913
34 6 0 -4.709129 -1.896616 -0.017045
35 6 0 -6.094342 -2.142706 0.054640
36 6 0 -3.844921 -3.007822 -0.105300
37 6 0 -6.600001 -3.440248 0.037225
38 1 0 -6.776966 -1.298722 0.124539
39 6 0 -4.350526 -4.302792 -0.122289
40 1 0 -2.771378 -2.855372 -0.158161
41 6 0 -5.729597 -4.527650 -0.051717
42 1 0 -7.673133 -3.602373 0.093453
43 1 0 -3.666214 -5.144353 -0.190030
44 1 0 -6.119334 -5.541811 -0.064992
45 6 0 4.709130 -1.896613 -0.017036
46 6 0 6.094345 -2.142700 0.054612
47 6 0 3.844922 -3.007823 -0.105246
48 6 0 6.600006 -3.440242 0.037205
49 1 0 6.776971 -1.298713 0.124475
50 6 0 4.350528 -4.302792 -0.122227
51 1 0 2.771376 -2.855375 -0.158076
52 6 0 5.729602 -4.527646 -0.051692
53 1 0 7.673140 -3.602364 0.093405
54 1 0 3.666216 -5.144355 -0.189932
55 1 0 6.119340 -5.541808 -0.064961
---------------------------------------------------------------------
친절한 답변 감사드리며, 지연된 점 사과드립니다. 내가 충분히 명확하게 밝히지 않았을 수도 있습니다.
아래에 테이블을 grep/인쇄하려는 잘린 내용(File1 및 File2)을 제공했습니다. 이 디렉토리에는 그러한 파일이 수백 개 있습니다. 테이블의 마지막 행까지 "Standard Orientation" 문자열 아래에 테이블을 인쇄하고 싶습니다. 당신의 도움을 주셔서 감사합니다. 확실하지 않은 경우 알려주십시오.
입력 파일 1
Largest Abelian subgroup C1 NOp 1
Largest concise Abelian subgroup C1 NOp 1
Standard orientation:
---------------------------------------------------------------------
Center Atomic Atomic Coordinates (Angstroms)
Number Number Type X Y Z
---------------------------------------------------------------------
1 6 0 -1.216586 3.100980 0.000455
2 6 0 0.000001 3.773566 0.000597
3 6 0 1.216588 3.100980 0.000455
4 1 0 0.000001 4.859634 0.000803
5 6 0 2.545495 1.320077 0.000192
6 6 0 2.555481 3.591962 0.000448
7 6 0 3.373040 2.468224 0.000313
8 1 0 4.455638 2.453296 0.000315
9 5 0 0.000001 0.764927 0.000563
10 9 0 -0.000002 -0.025840 -1.144052
11 9 0 0.000004 -0.025210 1.145650
12 7 0 1.253950 1.705003 0.000299
13 7 0 -1.253948 1.705003 0.000304
14 6 0 -2.545494 1.320077 0.000203
15 6 0 -3.373038 2.468224 0.000323
16 6 0 -2.555479 3.591962 0.000449
17 1 0 -4.455636 2.453297 0.000331
18 6 0 2.975497 5.031002 0.000174
19 1 0 2.605223 5.563377 -0.885146
20 1 0 2.598139 5.565869 0.880953
21 1 0 4.066160 5.115561 0.004377
22 6 0 -2.975495 5.031002 0.000141
23 1 0 -2.597868 5.565972 0.880740
24 1 0 -2.605491 5.563274 -0.885356
25 1 0 -4.066157 5.115563 0.004663
26 6 0 -3.042055 -0.137670 -0.000010
27 6 0 -4.329115 -0.456310 -0.000102
28 1 0 -2.243779 -0.891949 -0.000057
29 1 0 -5.127391 0.297969 -0.000059
30 6 0 3.042055 -0.137671 -0.000027
31 6 0 4.329114 -0.456312 -0.000125
32 1 0 2.243778 -0.891949 -0.000118
33 1 0 5.127391 0.297967 -0.000031
34 6 0 -4.825676 -1.914057 -0.000287
35 6 0 -6.193953 -2.184917 -0.000378
36 6 0 -3.906762 -2.963823 -0.000907
37 6 0 -6.643592 -3.505635 -0.000774
38 1 0 -6.918278 -1.357574 -0.000224
39 6 0 -4.356219 -4.284249 -0.000825
40 1 0 -2.827996 -2.749959 -0.001252
41 6 0 -5.725089 -4.555194 -0.000398
42 1 0 -7.722380 -3.718843 -0.000068
43 1 0 -3.632201 -5.111953 -0.000588
44 1 0 -6.079423 -5.596224 -0.000077
45 6 0 4.825674 -1.914059 -0.000371
46 6 0 6.193952 -2.184919 -0.000464
47 6 0 3.906760 -2.963824 0.000042
48 6 0 6.643589 -3.505638 -0.000459
49 1 0 6.918277 -1.357577 -0.000455
50 6 0 4.356216 -4.284250 -0.000432
51 1 0 2.827994 -2.749960 0.000531
52 6 0 5.725086 -4.555196 -0.001042
53 1 0 7.722377 -3.718846 -0.001310
54 1 0 3.632197 -5.111954 -0.000832
55 1 0 6.079420 -5.596226 -0.001671
---------------------------------------------------------------------
Rotational constants (GHZ): 0.1374145 0.0808973 0.0514693
Leave Link 202 at Sat Jan 11 09:07:38 2020, MaxMem= 536870912 cpu: 0.2 elap: 0.0
입력 파일 2
Largest Abelian subgroup C1 NOp 1
Largest concise Abelian subgroup C1 NOp 1
Standard orientation:
---------------------------------------------------------------------
Center Atomic Atomic Coordinates (Angstroms)
Number Number Type X Y Z
---------------------------------------------------------------------
1 6 0 -1.217328 3.807808 -0.035244
2 6 0 -0.001626 4.483869 -0.038956
3 6 0 1.214343 3.808279 -0.038119
4 1 0 -0.001868 5.568980 -0.065942
5 6 0 2.559803 2.033594 -0.051567
6 6 0 2.551865 4.309250 -0.108853
7 6 0 3.376521 3.200643 -0.118650
8 1 0 4.456191 3.206513 -0.187829
9 5 0 -0.000701 1.515223 0.258023
10 9 0 -0.001535 0.432163 -0.623591
11 9 0 0.000936 1.077139 1.572032
12 7 0 1.255845 2.419557 -0.007705
13 7 0 -1.258221 2.419071 -0.004733
14 6 0 -2.562130 2.032603 -0.045515
15 6 0 -3.379455 3.199335 -0.110684
16 6 0 -2.555209 4.308262 -0.102805
17 1 0 -4.459285 3.204786 -0.177327
18 6 0 2.952863 5.751758 -0.182066
19 1 0 2.564068 6.236386 -1.086712
20 1 0 2.577903 6.321497 0.677361
21 1 0 4.042215 5.850997 -0.195786
22 6 0 -2.956937 5.750615 -0.175054
23 1 0 -2.580176 6.320490 0.683495
24 1 0 -2.570460 6.235404 -1.080607
25 1 0 -4.046357 5.849432 -0.186208
26 6 0 -2.955292 0.646389 -0.040413
27 6 0 -4.240099 0.224094 0.040298
28 1 0 -2.144380 -0.068795 -0.116152
29 1 0 -5.029157 0.971114 0.117451
30 6 0 2.953516 0.647533 -0.047382
31 6 0 4.238674 0.225740 0.030295
32 1 0 2.142705 -0.067967 -0.121195
33 1 0 5.027621 0.973068 0.105568
34 6 0 -4.709570 -1.158284 0.040791
35 6 0 -6.094646 -1.403512 0.117881
36 6 0 -3.845231 -2.270547 -0.031404
37 6 0 -6.600050 -2.701267 0.120995
38 1 0 -6.777366 -0.558687 0.175613
39 6 0 -4.350581 -3.565723 -0.027904
40 1 0 -2.771783 -2.118719 -0.087866
41 6 0 -5.729520 -3.789738 0.047739
42 1 0 -7.673080 -2.862717 0.180971
43 1 0 -3.666171 -4.408093 -0.083517
44 6 0 4.708682 -1.156454 0.029695
45 6 0 6.094033 -1.401143 0.103481
46 6 0 3.844607 -2.269056 -0.040417
47 6 0 6.599948 -2.698702 0.105411
48 1 0 6.776561 -0.556050 0.159568
49 6 0 4.350467 -3.564035 -0.038101
50 1 0 2.770967 -2.117646 -0.094317
51 6 0 5.729671 -3.787511 0.034253
52 1 0 7.673182 -2.859733 0.162829
53 1 0 3.666254 -4.406671 -0.092065
54 8 0 -6.243296 -5.124253 0.049984
55 8 0 6.243970 -5.121826 0.035293
56 6 0 -7.624282 -5.104707 -0.320687
57 1 0 -7.967776 -6.107046 -0.469779
58 1 0 -8.195969 -4.643809 0.457546
59 1 0 -7.742425 -4.548641 -1.227182
60 6 0 7.642659 -5.094520 -0.261059
61 1 0 8.169083 -4.628290 0.545419
62 1 0 7.999744 -6.095036 -0.388951
63 1 0 7.805719 -4.539801 -1.161391
---------------------------------------------------------------------
Rotational constants (GHZ): 0.0924797 0.0555654 0.0350317
Leave Link 202 at Sat Jan 11 16:58:46 2020, MaxMem= 536870912 cpu: 0.2 elap: 0.1
답변1
awk
나는 해결책을 생각해 냈습니다.
awk '$1~/^[[:digit:]]+$/ && $1>=1 && $1<=55' *.txt
.txt
그러면 (또는 귀하의 경우 실제 파일 이름)로 끝나는 모든 파일을 처리하고 각 줄의 첫 번째 열을 확인합니다. 첫 번째 열인 경우 행을 인쇄합니다.
- 는 정수이고,
- 값은 1에서 55(포함) 사이입니다.
이렇게 하면 처리가 실제 "파일 본문"으로 제한되고 "헤더"는 무시됩니다.
첫 번째 열에 대한 "온전성 검사"는 음수가 아닌 정수만 허용한다는 점에서 매우 엄격하며 이는 예제 파일 내용의 경우인 것 같습니다. 이 설정을 완화하여 숫자 값을 허용하려면(유일한 제한은 원하는 범위에 속한다는 것입니다) 다음을 변경할 수 있습니다.
$1~/^[[:digit:]]$/
도착하다
$1+0==$1
@αГsнιι가 댓글에서 지적했듯이.
답변2
디렉토리에 CD를 넣으면 다음은 디렉토리에 있는 각 파일의 처음 55줄을 출력해야 합니다. 이는 차례로 파일 등으로 정렬/전송될 수 있습니다. 이를 수행하는 더 좋은 방법이 있지만 이것이 효과가 있습니다.
ls -al | awk '{print $9 }' | while read line; do cat $line | head -55 ; done
명령이 아무것도 출력하지 않으면 "awk" 명령의 열을 운영 체제에 적합한 열로 변경해야 할 수도 있습니다.