回答編集履歴

3

fname:拡張子のドットを調べてから切り出すようにしました。この用途では必要ありませんが。

2019/12/12 13:17

投稿

退会済みユーザー
test CHANGED
@@ -60,7 +60,9 @@
60
60
 
61
61
  fname = a[ct];
62
62
 
63
- fname = substr(fname, 1, index(fname, ".") - 1);
63
+ if (pos = index(fname, "."))
64
+
65
+ fname = substr(fname, 1, pos - 1);
64
66
 
65
67
  print fname "," fld1 "," fld4 "," max;
66
68
 
@@ -128,7 +130,9 @@
128
130
 
129
131
  fname = a[ct];
130
132
 
131
- fname = substr(fname, 1, index(fname, ".") - 1);
133
+ if (pos = index(fname, "."))
134
+
135
+ fname = substr(fname, 1, pos - 1);
132
136
 
133
137
  print fname "," fld1 "," fld4 "," max;
134
138
 

2

bash用のスクリプトを追記しました

2019/12/12 13:17

投稿

退会済みユーザー
test CHANGED
@@ -89,3 +89,71 @@
89
89
  endlocal
90
90
 
91
91
  ```
92
+
93
+ .
94
+
95
+ .
96
+
97
+ .
98
+
99
+ 追記
100
+
101
+ 手元のMSYS2にて 以下をbashで実行し
102
+
103
+ batファイル起動時と同じ結果を得ました。
104
+
105
+
106
+
107
+ ```awk
108
+
109
+ NR > 1 {
110
+
111
+ if (max < $3) {
112
+
113
+ max = $3;
114
+
115
+ fld1 = $1;
116
+
117
+ fld4 = $4;
118
+
119
+ }
120
+
121
+ }
122
+
123
+
124
+
125
+ END {
126
+
127
+ ct = split(FILENAME, a, "/"); #PATH-delim linux
128
+
129
+ fname = a[ct];
130
+
131
+ fname = substr(fname, 1, index(fname, ".") - 1);
132
+
133
+ print fname "," fld1 "," fld4 "," max;
134
+
135
+ }
136
+
137
+ ```
138
+
139
+ ```bash
140
+
141
+ #!/bin/bash
142
+
143
+
144
+
145
+ cd `dirname $0`
146
+
147
+
148
+
149
+ for file in `\find . -name '*.txt'`; do
150
+
151
+
152
+
153
+ gawk -f select_max.awk $file >> result.csv
154
+
155
+
156
+
157
+ done
158
+
159
+ ```

1

環境勘違いです。

2019/12/12 10:52

投稿

退会済みユーザー
test CHANGED
@@ -1,6 +1,20 @@
1
+ 質問を読み飛ばしてしまいました。
2
+
3
+ 当方Windowsを使っているので参考までに。
4
+
5
+ コマンドで~というのはちょっと
6
+
7
+ 現実的でないように思います。
8
+
9
+ batファイルをシェルスクリプトに置き換えて
10
+
11
+ 読んでください。
12
+
13
+
14
+
1
15
  aaa.txt等のテキストファイルが
2
16
 
3
- 同一ディレクトリかそのサブフォルダにあるなら
17
+ 同一ディレクトリかそのサブディレクトリにあるなら
4
18
 
5
19
  以下の2ファイルをその親の方のディレクトリに置いて
6
20