大きなファイル(.sdf)があり、特殊文字($$$$検索)を使用して小さなファイルに分割したいです。
sdfファイルは次のとおりです。
vercirnon
OpenBabel12162112363D
30 32 0 0 0 0 0 0 0 0999 V2000
9.5587 8.0626 0.2010 C 0 0 0 0 0 0 0 0 0 0 0 0
9.5370 6.8058 -0.7024 C 0 0 0 0 0 0 0 0 0 0 0 0
8.9692 7.2294 -2.0790 C 0 0 0 0 0 0 0 0 0 0 0 0
10.9840 6.3066 -0.9295 C 0 0 0 0 0 0 0 0 0 0 0 0
8.7040 5.7067 -0.0175 C 0 0 0 0 0 0 0 0 0 0 0 0
9.1113 5.2073 1.2337 C 0 0 0 0 0 0 0 0 0 0 0 0
8.3733 4.2234 1.8957 C 0 0 0 0 0 0 0 0 0 0 0 0
7.2091 3.7212 1.3148 C 0 0 0 0 0 0 0 0 0 0 0 0
6.2780 2.4897 2.2251 S 0 0 0 0 0 0 0 0 0 0 0 0
6.8993 1.1790 2.0362 O 0 0 0 0 0 0 0 0 0 0 0 0
5.8588 2.9960 3.5333 O 0 0 0 0 0 0 0 0 0 0 0 0
4.9981 2.2950 1.5012 N 0 0 0 0 0 0 0 0 0 0 0 0
3.8722 3.1731 1.3833 C 0 0 0 0 0 0 0 0 0 0 0 0
3.9973 4.5103 1.8031 C 0 0 0 0 0 0 0 0 0 0 0 0
2.9406 5.4112 1.6839 C 0 0 0 0 0 0 0 0 0 0 0 0
1.7284 4.9785 1.1608 C 0 0 0 0 0 0 0 0 0 0 0 0
0.3923 6.0759 1.0574 Cl 0 0 0 0 0 0 0 0 0 0 0 0
1.5746 3.6564 0.7477 C 0 0 0 0 0 0 0 0 0 0 0 0
2.6388 2.7433 0.8212 C 0 0 0 0 0 0 0 0 0 0 0 0
2.4135 1.3214 0.4021 C 0 0 0 0 0 0 0 0 0 0 0 0
3.1426 0.4511 0.8208 O 0 0 0 0 0 0 0 0 0 0 0 0
1.2975 0.9364 -0.5087 C 0 0 0 0 0 0 0 0 0 0 0 0
0.5786 1.7825 -1.3567 C 0 0 0 0 0 0 0 0 0 0 0 0
-0.4392 1.2632 -2.1615 C 0 0 0 0 0 0 0 0 0 0 0 0
-0.7443 -0.0390 -2.1595 N 0 0 0 0 0 0 0 0 0 0 0 0
-1.6669 -0.4714 -2.8846 O 0 0 0 0 0 0 0 0 0 0 0 0
-0.0490 -0.8769 -1.3832 C 0 0 0 0 0 0 0 0 0 0 0 0
0.9865 -0.4274 -0.5611 C 0 0 0 0 0 0 0 0 0 0 0 0
6.7891 4.1887 0.0683 C 0 0 0 0 0 0 0 0 0 0 0 0
7.5337 5.1733 -0.5887 C 0 0 0 0 0 0 0 0 0 0 0 0
1 2 1 0 0 0 0
2 3 1 0 0 0 0
2 4 1 0 0 0 0
2 5 1 0 0 0 0
5 6 2 0 0 0 0
5 30 1 0 0 0 0
6 7 1 0 0 0 0
7 8 2 0 0 0 0
8 9 1 0 0 0 0
8 29 1 0 0 0 0
9 10 2 0 0 0 0
9 11 2 0 0 0 0
9 12 1 0 0 0 0
12 13 1 0 0 0 0
13 14 2 0 0 0 0
13 19 1 0 0 0 0
14 15 1 0 0 0 0
15 16 2 0 0 0 0
16 17 1 0 0 0 0
16 18 1 0 0 0 0
18 19 2 0 0 0 0
19 20 1 0 0 0 0
20 21 2 0 0 0 0
20 22 1 0 0 0 0
22 23 1 0 0 0 0
22 28 1 0 0 0 0
23 24 1 0 0 0 0
24 25 1 0 0 0 0
25 26 1 0 0 0 0
25 27 1 0 0 0 0
27 28 1 0 0 0 0
29 30 2 0 0 0 0
M END
$$$$
BMCL2016_20
OpenBabel12162112363D
27 30 0 0 0 0 0 0 0 0999 V2000
1.7921 2.8234 -0.2356 C 0 0 0 0 0 0 0 0 0 0 0 0
3.1990 2.7653 0.4098 C 0 0 0 0 0 0 0 0 0 0 0 0
3.7558 1.3491 0.1528 C 0 0 0 0 0 0 0 0 0 0 0 0
3.2150 0.2459 0.8374 C 0 0 0 0 0 0 0 0 0 0 0 0
3.7062 -1.0464 0.6362 C 0 0 0 0 0 0 0 0 0 0 0 0
4.7583 -1.2832 -0.2567 C 0 0 0 0 0 0 0 0 0 0 0 0
5.2901 -2.6928 -0.4837 C 0 0 0 0 0 0 0 0 0 0 0 0
4.1934 -3.6802 -0.7756 N 0 3 0 0 0 0 0 0 0 0 0 0
3.6094 -3.8094 -1.9125 C 0 0 0 0 0 0 0 0 0 0 0 0
3.8079 -3.1344 -3.2109 C 0 0 0 0 0 0 0 0 0 0 0 0
4.6857 -2.3007 -3.2802 O 0 0 0 0 0 0 0 0 0 0 0 0
3.0661 -3.4129 -4.3038 O 0 0 0 0 0 0 0 0 0 0 0 0
2.6185 -4.7945 -1.8075 C 0 0 0 0 0 0 0 0 0 0 0 0
2.6833 -5.2233 -0.4919 C 0 0 0 0 0 0 0 0 0 0 0 0
1.9431 -6.1495 0.1174 N 0 0 0 0 0 0 0 0 0 0 0 0
2.2260 -6.3518 1.4133 C 0 0 0 0 0 0 0 0 0 0 0 0
3.2272 -5.6463 2.0980 C 0 0 0 0 0 0 0 0 0 0 0 0
3.5189 -5.9726 3.7741 Cl 0 0 0 0 0 0 0 0 0 0 0 0
3.9903 -4.6817 1.4401 C 0 0 0 0 0 0 0 0 0 0 0 0
3.6977 -4.4753 0.0988 C 0 0 0 0 0 0 0 0 0 0 0 0
5.3011 -0.1919 -0.9458 C 0 0 0 0 0 0 0 0 0 0 0 0
4.8099 1.1011 -0.7442 C 0 0 0 0 0 0 0 0 0 0 0 0
3.1193 3.0497 1.9295 C 0 0 0 0 0 0 0 0 0 0 0 0
2.7571 4.5058 2.2596 C 0 0 0 0 0 0 0 0 0 0 0 0
3.6882 5.3885 1.6530 O 0 0 0 0 0 0 0 0 0 0 0 0
3.6783 5.2898 0.2371 C 0 0 0 0 0 0 0 0 0 0 0 0
4.0923 3.8800 -0.1877 C 0 0 0 0 0 0 0 0 0 0 0 0
1 2 1 0 0 0 0
2 3 1 0 0 0 0
2 23 1 0 0 0 0
2 27 1 0 0 0 0
3 4 2 0 0 0 0
3 22 1 0 0 0 0
4 5 1 0 0 0 0
5 6 2 0 0 0 0
6 7 1 0 0 0 0
6 21 1 0 0 0 0
7 8 1 0 0 0 0
8 9 2 0 0 0 0
8 20 1 0 0 0 0
9 10 1 0 0 0 0
9 13 1 0 0 0 0
10 11 2 0 0 0 0
10 12 1 0 0 0 0
13 14 2 0 0 0 0
14 15 1 0 0 0 0
14 20 1 0 0 0 0
15 16 1 0 0 0 0
16 17 2 0 0 0 0
17 18 1 0 0 0 0
17 19 1 0 0 0 0
19 20 2 0 0 0 0
21 22 2 0 0 0 0
23 24 1 0 0 0 0
24 25 1 0 0 0 0
25 26 1 0 0 0 0
26 27 1 0 0 0 0
M CHG 1 8 1
M END
$$$$
BMCL2016_19
OpenBabel12162112363D
24 26 0 0 0 0 0 0 0 0999 V2000
7.4483 1.0368 0.6595 O 0 0 0 0 0 0 0 0 0 0 0 0
8.0491 0.0940 1.1188 C 0 0 0 0 0 0 0 0 0 0 0 0
8.7614 0.3379 2.0658 O 0 0 0 0 0 0 0 0 0 0 0 0
7.9192 -1.2687 0.5814 C 0 0 0 0 0 0 0 0 0 0 0 0
8.5726 -2.3934 1.0856 C 0 0 0 0 0 0 0 0 0 0 0 0
8.1380 -3.4812 0.3334 C 0 0 0 0 0 0 0 0 0 0 0 0
8.4995 -4.8363 0.4795 N 0 0 0 0 0 0 0 0 0 0 0 0
7.8411 -5.6890 -0.4439 C 0 0 0 0 0 0 0 0 0 0 0 0
6.9259 -5.2387 -1.3981 C 0 0 0 0 0 0 0 0 0 0 0 0
6.1791 -6.3752 -2.4701 Cl 0 0 0 0 0 0 0 0 0 0 0 0
6.6087 -3.8841 -1.4962 C 0 0 0 0 0 0 0 0 0 0 0 0
7.2318 -3.0081 -0.6162 C 0 0 0 0 0 0 0 0 0 0 0 0
7.1404 -1.6587 -0.4670 N 0 3 0 0 0 0 0 0 0 0 0 0
6.2065 -0.8240 -1.2132 C 0 0 0 0 0 0 0 0 0 0 0 0
4.8399 -0.6829 -0.5536 C 0 0 0 0 0 0 0 0 0 0 0 0
4.5003 -1.3309 0.6427 C 0 0 0 0 0 0 0 0 0 0 0 0
3.2340 -1.1639 1.2097 C 0 0 0 0 0 0 0 0 0 0 0 0
2.2730 -0.3639 0.5911 C 0 0 0 0 0 0 0 0 0 0 0 0
0.9259 -0.1249 1.2502 C 0 0 0 0 0 0 0 0 0 0 0 0
0.9644 -0.2517 2.6331 F 0 0 0 0 0 0 0 0 0 0 0 0
0.4125 1.1039 0.9805 F 0 0 0 0 0 0 0 0 0 0 0 0
0.0346 -1.0091 0.8151 F 0 0 0 0 0 0 0 0 0 0 0 0
2.6134 0.3005 -0.5873 C 0 0 0 0 0 0 0 0 0 0 0 0
3.8777 0.1379 -1.1594 C 0 0 0 0 0 0 0 0 0 0 0 0
1 2 2 0 0 0 0
2 3 1 0 0 0 0
2 4 1 0 0 0 0
4 5 1 0 0 0 0
4 13 2 0 0 0 0
5 6 2 0 0 0 0
6 7 1 0 0 0 0
6 12 1 0 0 0 0
7 8 1 0 0 0 0
8 9 2 0 0 0 0
9 10 1 0 0 0 0
9 11 1 0 0 0 0
11 12 2 0 0 0 0
12 13 1 0 0 0 0
13 14 1 0 0 0 0
14 15 1 0 0 0 0
15 16 2 0 0 0 0
15 24 1 0 0 0 0
16 17 1 0 0 0 0
17 18 2 0 0 0 0
18 19 1 0 0 0 0
18 23 1 0 0 0 0
19 20 1 0 0 0 0
19 21 1 0 0 0 0
19 22 1 0 0 0 0
23 24 2 0 0 0 0
M CHG 1 13 1
M END
このファイルを$$$$文字で分割して削除したいです。また、新しいファイルの名前は、最初の行(名前)と拡張子を使用して変更する必要があります.sdf
。結果は次のようになります。
ファイル1 =vercirnon.sdf
vercirnon
OpenBabel12162112363D
30 32 0 0 0 0 0 0 0 0999 V2000
9.5587 8.0626 0.2010 C 0 0 0 0 0 0 0 0 0 0 0 0
9.5370 6.8058 -0.7024 C 0 0 0 0 0 0 0 0 0 0 0 0
8.9692 7.2294 -2.0790 C 0 0 0 0 0 0 0 0 0 0 0 0
10.9840 6.3066 -0.9295 C 0 0 0 0 0 0 0 0 0 0 0 0
8.7040 5.7067 -0.0175 C 0 0 0 0 0 0 0 0 0 0 0 0
9.1113 5.2073 1.2337 C 0 0 0 0 0 0 0 0 0 0 0 0
8.3733 4.2234 1.8957 C 0 0 0 0 0 0 0 0 0 0 0 0
7.2091 3.7212 1.3148 C 0 0 0 0 0 0 0 0 0 0 0 0
6.2780 2.4897 2.2251 S 0 0 0 0 0 0 0 0 0 0 0 0
6.8993 1.1790 2.0362 O 0 0 0 0 0 0 0 0 0 0 0 0
5.8588 2.9960 3.5333 O 0 0 0 0 0 0 0 0 0 0 0 0
4.9981 2.2950 1.5012 N 0 0 0 0 0 0 0 0 0 0 0 0
3.8722 3.1731 1.3833 C 0 0 0 0 0 0 0 0 0 0 0 0
3.9973 4.5103 1.8031 C 0 0 0 0 0 0 0 0 0 0 0 0
2.9406 5.4112 1.6839 C 0 0 0 0 0 0 0 0 0 0 0 0
1.7284 4.9785 1.1608 C 0 0 0 0 0 0 0 0 0 0 0 0
0.3923 6.0759 1.0574 Cl 0 0 0 0 0 0 0 0 0 0 0 0
1.5746 3.6564 0.7477 C 0 0 0 0 0 0 0 0 0 0 0 0
2.6388 2.7433 0.8212 C 0 0 0 0 0 0 0 0 0 0 0 0
2.4135 1.3214 0.4021 C 0 0 0 0 0 0 0 0 0 0 0 0
3.1426 0.4511 0.8208 O 0 0 0 0 0 0 0 0 0 0 0 0
1.2975 0.9364 -0.5087 C 0 0 0 0 0 0 0 0 0 0 0 0
0.5786 1.7825 -1.3567 C 0 0 0 0 0 0 0 0 0 0 0 0
-0.4392 1.2632 -2.1615 C 0 0 0 0 0 0 0 0 0 0 0 0
-0.7443 -0.0390 -2.1595 N 0 0 0 0 0 0 0 0 0 0 0 0
-1.6669 -0.4714 -2.8846 O 0 0 0 0 0 0 0 0 0 0 0 0
-0.0490 -0.8769 -1.3832 C 0 0 0 0 0 0 0 0 0 0 0 0
0.9865 -0.4274 -0.5611 C 0 0 0 0 0 0 0 0 0 0 0 0
6.7891 4.1887 0.0683 C 0 0 0 0 0 0 0 0 0 0 0 0
7.5337 5.1733 -0.5887 C 0 0 0 0 0 0 0 0 0 0 0 0
1 2 1 0 0 0 0
2 3 1 0 0 0 0
2 4 1 0 0 0 0
2 5 1 0 0 0 0
5 6 2 0 0 0 0
5 30 1 0 0 0 0
6 7 1 0 0 0 0
7 8 2 0 0 0 0
8 9 1 0 0 0 0
8 29 1 0 0 0 0
9 10 2 0 0 0 0
9 11 2 0 0 0 0
9 12 1 0 0 0 0
12 13 1 0 0 0 0
13 14 2 0 0 0 0
13 19 1 0 0 0 0
14 15 1 0 0 0 0
15 16 2 0 0 0 0
16 17 1 0 0 0 0
16 18 1 0 0 0 0
18 19 2 0 0 0 0
19 20 1 0 0 0 0
20 21 2 0 0 0 0
20 22 1 0 0 0 0
22 23 1 0 0 0 0
22 28 1 0 0 0 0
23 24 1 0 0 0 0
24 25 1 0 0 0 0
25 26 1 0 0 0 0
25 27 1 0 0 0 0
27 28 1 0 0 0 0
29 30 2 0 0 0 0
M END
ファイル2 =BMCL2016_20.sdf
BMCL2016_20
OpenBabel12162112363D
27 30 0 0 0 0 0 0 0 0999 V2000
1.7921 2.8234 -0.2356 C 0 0 0 0 0 0 0 0 0 0 0 0
3.1990 2.7653 0.4098 C 0 0 0 0 0 0 0 0 0 0 0 0
3.7558 1.3491 0.1528 C 0 0 0 0 0 0 0 0 0 0 0 0
3.2150 0.2459 0.8374 C 0 0 0 0 0 0 0 0 0 0 0 0
3.7062 -1.0464 0.6362 C 0 0 0 0 0 0 0 0 0 0 0 0
4.7583 -1.2832 -0.2567 C 0 0 0 0 0 0 0 0 0 0 0 0
5.2901 -2.6928 -0.4837 C 0 0 0 0 0 0 0 0 0 0 0 0
4.1934 -3.6802 -0.7756 N 0 3 0 0 0 0 0 0 0 0 0 0
3.6094 -3.8094 -1.9125 C 0 0 0 0 0 0 0 0 0 0 0 0
3.8079 -3.1344 -3.2109 C 0 0 0 0 0 0 0 0 0 0 0 0
4.6857 -2.3007 -3.2802 O 0 0 0 0 0 0 0 0 0 0 0 0
3.0661 -3.4129 -4.3038 O 0 0 0 0 0 0 0 0 0 0 0 0
2.6185 -4.7945 -1.8075 C 0 0 0 0 0 0 0 0 0 0 0 0
2.6833 -5.2233 -0.4919 C 0 0 0 0 0 0 0 0 0 0 0 0
1.9431 -6.1495 0.1174 N 0 0 0 0 0 0 0 0 0 0 0 0
2.2260 -6.3518 1.4133 C 0 0 0 0 0 0 0 0 0 0 0 0
3.2272 -5.6463 2.0980 C 0 0 0 0 0 0 0 0 0 0 0 0
3.5189 -5.9726 3.7741 Cl 0 0 0 0 0 0 0 0 0 0 0 0
3.9903 -4.6817 1.4401 C 0 0 0 0 0 0 0 0 0 0 0 0
3.6977 -4.4753 0.0988 C 0 0 0 0 0 0 0 0 0 0 0 0
5.3011 -0.1919 -0.9458 C 0 0 0 0 0 0 0 0 0 0 0 0
4.8099 1.1011 -0.7442 C 0 0 0 0 0 0 0 0 0 0 0 0
3.1193 3.0497 1.9295 C 0 0 0 0 0 0 0 0 0 0 0 0
2.7571 4.5058 2.2596 C 0 0 0 0 0 0 0 0 0 0 0 0
3.6882 5.3885 1.6530 O 0 0 0 0 0 0 0 0 0 0 0 0
3.6783 5.2898 0.2371 C 0 0 0 0 0 0 0 0 0 0 0 0
4.0923 3.8800 -0.1877 C 0 0 0 0 0 0 0 0 0 0 0 0
1 2 1 0 0 0 0
2 3 1 0 0 0 0
2 23 1 0 0 0 0
2 27 1 0 0 0 0
3 4 2 0 0 0 0
3 22 1 0 0 0 0
4 5 1 0 0 0 0
5 6 2 0 0 0 0
6 7 1 0 0 0 0
6 21 1 0 0 0 0
7 8 1 0 0 0 0
8 9 2 0 0 0 0
8 20 1 0 0 0 0
9 10 1 0 0 0 0
9 13 1 0 0 0 0
10 11 2 0 0 0 0
10 12 1 0 0 0 0
13 14 2 0 0 0 0
14 15 1 0 0 0 0
14 20 1 0 0 0 0
15 16 1 0 0 0 0
16 17 2 0 0 0 0
17 18 1 0 0 0 0
17 19 1 0 0 0 0
19 20 2 0 0 0 0
21 22 2 0 0 0 0
23 24 1 0 0 0 0
24 25 1 0 0 0 0
25 26 1 0 0 0 0
26 27 1 0 0 0 0
M CHG 1 8 1
M END
ファイル3 =BMCL2016_19.sdf
BMCL2016_19
OpenBabel12162112363D
24 26 0 0 0 0 0 0 0 0999 V2000
7.4483 1.0368 0.6595 O 0 0 0 0 0 0 0 0 0 0 0 0
8.0491 0.0940 1.1188 C 0 0 0 0 0 0 0 0 0 0 0 0
8.7614 0.3379 2.0658 O 0 0 0 0 0 0 0 0 0 0 0 0
7.9192 -1.2687 0.5814 C 0 0 0 0 0 0 0 0 0 0 0 0
8.5726 -2.3934 1.0856 C 0 0 0 0 0 0 0 0 0 0 0 0
8.1380 -3.4812 0.3334 C 0 0 0 0 0 0 0 0 0 0 0 0
8.4995 -4.8363 0.4795 N 0 0 0 0 0 0 0 0 0 0 0 0
7.8411 -5.6890 -0.4439 C 0 0 0 0 0 0 0 0 0 0 0 0
6.9259 -5.2387 -1.3981 C 0 0 0 0 0 0 0 0 0 0 0 0
6.1791 -6.3752 -2.4701 Cl 0 0 0 0 0 0 0 0 0 0 0 0
6.6087 -3.8841 -1.4962 C 0 0 0 0 0 0 0 0 0 0 0 0
7.2318 -3.0081 -0.6162 C 0 0 0 0 0 0 0 0 0 0 0 0
7.1404 -1.6587 -0.4670 N 0 3 0 0 0 0 0 0 0 0 0 0
6.2065 -0.8240 -1.2132 C 0 0 0 0 0 0 0 0 0 0 0 0
4.8399 -0.6829 -0.5536 C 0 0 0 0 0 0 0 0 0 0 0 0
4.5003 -1.3309 0.6427 C 0 0 0 0 0 0 0 0 0 0 0 0
3.2340 -1.1639 1.2097 C 0 0 0 0 0 0 0 0 0 0 0 0
2.2730 -0.3639 0.5911 C 0 0 0 0 0 0 0 0 0 0 0 0
0.9259 -0.1249 1.2502 C 0 0 0 0 0 0 0 0 0 0 0 0
0.9644 -0.2517 2.6331 F 0 0 0 0 0 0 0 0 0 0 0 0
0.4125 1.1039 0.9805 F 0 0 0 0 0 0 0 0 0 0 0 0
0.0346 -1.0091 0.8151 F 0 0 0 0 0 0 0 0 0 0 0 0
2.6134 0.3005 -0.5873 C 0 0 0 0 0 0 0 0 0 0 0 0
3.8777 0.1379 -1.1594 C 0 0 0 0 0 0 0 0 0 0 0 0
1 2 2 0 0 0 0
2 3 1 0 0 0 0
2 4 1 0 0 0 0
4 5 1 0 0 0 0
4 13 2 0 0 0 0
5 6 2 0 0 0 0
6 7 1 0 0 0 0
6 12 1 0 0 0 0
7 8 1 0 0 0 0
8 9 2 0 0 0 0
9 10 1 0 0 0 0
9 11 1 0 0 0 0
11 12 2 0 0 0 0
12 13 1 0 0 0 0
13 14 1 0 0 0 0
14 15 1 0 0 0 0
15 16 2 0 0 0 0
15 24 1 0 0 0 0
16 17 1 0 0 0 0
17 18 2 0 0 0 0
18 19 1 0 0 0 0
18 23 1 0 0 0 0
19 20 1 0 0 0 0
19 21 1 0 0 0 0
19 22 1 0 0 0 0
23 24 2 0 0 0 0
M CHG 1 13 1
M END
誰かがこれを行うためのいくつかのコードを提案できますか?似たようなものが見つかりましたが、何も見つかりませんでした。
よろしくお願いします。
答え1
csplit
分割モードを許可し、xxii
(テキストxx
とii
=増加数)という名前の(デフォルト)ファイルを作成します。次のステップは、ファイルを繰り返し、対応する最初の行に名前を変更し、元のファイルを削除することです。
#/bin/bash
csplit --suppress-matched infile.sdf '/\$\$\$\$/' '{*}' &&
for file in xx* ; do
mv "$file" "$(head -n1 "$file")".sdf
done &&
rm infile.sdf
答え2
次のようにしてみてください。
$ perl -lne '
if (/^\s*\$\$\$\$\s*$/) {
$newfile = 1;
next;
};
if ($. == 1 || $newfile) {
open($FH, ">", "$_.sdf") || die "error opening $_.sdf for write: $!\n";
$newfile = 0;
}
print $FH $_;
close(ARGV) if eof' bigfile.sdf
この変数は、$newfile
出力ファイル名が入力から抽出され、書き込み用に開かれるかどうかを決定するブールフラグとして使用されます。 $newfile
入力ファイルの最初の行と一致する行の後の行ごとに$$$$
true残りの時間は偽です。
この行は、各入力ファイルの終わりに行close(ARGV) if eof
カウンタ()をリセットし、スクリプトが複数の入力ファイルを処理できるようにします。$.
注:入力の完全性チェックはありません。このスクリプトは、ファイルの最初の行とその後の最初の行だけが$$$$
有効なファイル名であると信じる非常に基本的な高速で汚れたハックです。書き込み用にファイルを開くときにエラーが発生した場合(たとえば、「権限が拒否されました」、「デバイスに残りのスペースがありません」、または他のエラーのため)、少なくとも正常に終了し、エラーメッセージが表示されます。
答え3
awk '
NR == 1 {filename = $0 ".sdf"}
/^\$\$\$\$$/ {getline; filename = $0 ".sdf"}
{print > filename}
' file.sdf
パターンから特殊文字をエスケープする必要があります。\$