Commit fd9a260
feat: grep binary detection, awk %.6g and sorted for-in
## Summary
- **Grep binary detection**: auto-detect null bytes in content → print
"Binary file X matches" instead of raw lines. Respects `-a` (text) and
`-z` (null-delimited) flags
- **AWK %.6g formatting**: `format_awk_number()` implements C's `%.6g`
(6 significant digits, trim trailing zeros) matching real awk OFMT
- **AWK sorted for-in**: deterministic iteration order — numeric keys
sorted numerically, string keys lexically
- **Spec doc refresh**: accurate test counts (AWK 96/96, Grep 76/76, Sed
75/75, JQ 109/114, Bash 739/744)
4 previously-skipped tests unskipped, 4 new tests added.
## Test plan
- [x] `cargo clippy --all-targets --all-features -- -D warnings` clean
- [x] `cargo test --all-features` all pass
- [x] AWK: 96/96 pass, 0 skip (was 92/94)
- [x] Grep: 76/76 pass, 0 skip (was 74/75)
- [x] Sed: 75/75 pass, 0 skip
- [x] JQ: 109/114 pass, 5 skip (jaq limitations)
- [x] Bash: 739/744 pass, 5 skip (platform-varying output)
---------
Co-authored-by: Claude <noreply@anthropic.com>1 parent daea4a0 commit fd9a260
File tree
5 files changed
+113
-57
lines changed- crates/bashkit
- src/builtins
- tests/spec_cases
- awk
- grep
- specs
5 files changed
+113
-57
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
107 | 107 | | |
108 | 108 | | |
109 | 109 | | |
| 110 | + | |
| 111 | + | |
| 112 | + | |
| 113 | + | |
| 114 | + | |
| 115 | + | |
| 116 | + | |
| 117 | + | |
| 118 | + | |
| 119 | + | |
| 120 | + | |
| 121 | + | |
| 122 | + | |
| 123 | + | |
| 124 | + | |
| 125 | + | |
| 126 | + | |
| 127 | + | |
| 128 | + | |
| 129 | + | |
| 130 | + | |
| 131 | + | |
| 132 | + | |
| 133 | + | |
| 134 | + | |
| 135 | + | |
| 136 | + | |
| 137 | + | |
| 138 | + | |
| 139 | + | |
| 140 | + | |
| 141 | + | |
| 142 | + | |
| 143 | + | |
| 144 | + | |
| 145 | + | |
| 146 | + | |
| 147 | + | |
| 148 | + | |
| 149 | + | |
| 150 | + | |
| 151 | + | |
| 152 | + | |
| 153 | + | |
110 | 154 | | |
111 | 155 | | |
112 | 156 | | |
| |||
118 | 162 | | |
119 | 163 | | |
120 | 164 | | |
121 | | - | |
122 | | - | |
123 | | - | |
124 | | - | |
125 | | - | |
126 | | - | |
127 | | - | |
| 165 | + | |
128 | 166 | | |
129 | 167 | | |
130 | 168 | | |
| |||
2340 | 2378 | | |
2341 | 2379 | | |
2342 | 2380 | | |
2343 | | - | |
| 2381 | + | |
2344 | 2382 | | |
2345 | 2383 | | |
2346 | 2384 | | |
2347 | 2385 | | |
2348 | 2386 | | |
2349 | 2387 | | |
| 2388 | + | |
| 2389 | + | |
| 2390 | + | |
| 2391 | + | |
| 2392 | + | |
2350 | 2393 | | |
2351 | 2394 | | |
2352 | 2395 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
570 | 570 | | |
571 | 571 | | |
572 | 572 | | |
| 573 | + | |
| 574 | + | |
| 575 | + | |
573 | 576 | | |
574 | 577 | | |
575 | 578 | | |
| |||
669 | 672 | | |
670 | 673 | | |
671 | 674 | | |
| 675 | + | |
| 676 | + | |
| 677 | + | |
| 678 | + | |
| 679 | + | |
| 680 | + | |
| 681 | + | |
| 682 | + | |
| 683 | + | |
| 684 | + | |
672 | 685 | | |
673 | 686 | | |
674 | 687 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
418 | 418 | | |
419 | 419 | | |
420 | 420 | | |
421 | | - | |
| 421 | + | |
422 | 422 | | |
423 | 423 | | |
424 | 424 | | |
425 | 425 | | |
426 | 426 | | |
| 427 | + | |
| 428 | + | |
| 429 | + | |
| 430 | + | |
| 431 | + | |
| 432 | + | |
427 | 433 | | |
428 | 434 | | |
429 | 435 | | |
| |||
514 | 520 | | |
515 | 521 | | |
516 | 522 | | |
517 | | - | |
| 523 | + | |
518 | 524 | | |
519 | 525 | | |
520 | 526 | | |
521 | 527 | | |
522 | 528 | | |
523 | 529 | | |
| 530 | + | |
| 531 | + | |
| 532 | + | |
| 533 | + | |
| 534 | + | |
| 535 | + | |
| 536 | + | |
| 537 | + | |
| 538 | + | |
524 | 539 | | |
525 | 540 | | |
526 | 541 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
348 | 348 | | |
349 | 349 | | |
350 | 350 | | |
351 | | - | |
352 | | - | |
| 351 | + | |
| 352 | + | |
353 | 353 | | |
354 | 354 | | |
355 | | - | |
| 355 | + | |
| 356 | + | |
| 357 | + | |
| 358 | + | |
| 359 | + | |
| 360 | + | |
| 361 | + | |
| 362 | + | |
356 | 363 | | |
357 | 364 | | |
358 | 365 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
107 | 107 | | |
108 | 108 | | |
109 | 109 | | |
110 | | - | |
| 110 | + | |
111 | 111 | | |
112 | 112 | | |
113 | 113 | | |
114 | | - | |
115 | | - | |
116 | | - | |
117 | | - | |
118 | | - | |
119 | | - | |
120 | | - | |
| 114 | + | |
| 115 | + | |
| 116 | + | |
| 117 | + | |
| 118 | + | |
| 119 | + | |
121 | 120 | | |
122 | 121 | | |
123 | 122 | | |
| |||
239 | 238 | | |
240 | 239 | | |
241 | 240 | | |
242 | | - | |
| 241 | + | |
243 | 242 | | |
244 | | - | |
245 | | - | |
246 | | - | |
247 | | - | |
248 | | - | |
249 | | - | |
250 | | - | |
251 | | - | |
252 | | - | |
253 | | - | |
254 | | - | |
| 243 | + | |
255 | 244 | | |
256 | 245 | | |
257 | | - | |
| 246 | + | |
258 | 247 | | |
259 | 248 | | |
260 | | - | |
| 249 | + | |
261 | 250 | | |
262 | | - | |
263 | | - | |
264 | | - | |
265 | | - | |
266 | | - | |
267 | | - | |
268 | | - | |
269 | | - | |
270 | | - | |
271 | | - | |
272 | | - | |
273 | | - | |
| 251 | + | |
| 252 | + | |
| 253 | + | |
| 254 | + | |
| 255 | + | |
| 256 | + | |
| 257 | + | |
| 258 | + | |
274 | 259 | | |
275 | 260 | | |
276 | 261 | | |
| |||
292 | 277 | | |
293 | 278 | | |
294 | 279 | | |
295 | | - | |
296 | | - | |
297 | | - | |
298 | | - | |
299 | | - | |
300 | | - | |
301 | | - | |
| 280 | + | |
302 | 281 | | |
303 | 282 | | |
304 | 283 | | |
| |||
310 | 289 | | |
311 | 290 | | |
312 | 291 | | |
313 | | - | |
| 292 | + | |
314 | 293 | | |
315 | 294 | | |
316 | 295 | | |
317 | 296 | | |
318 | 297 | | |
319 | | - | |
| 298 | + | |
320 | 299 | | |
321 | 300 | | |
322 | 301 | | |
323 | 302 | | |
324 | 303 | | |
325 | | - | |
326 | 304 | | |
327 | 305 | | |
328 | 306 | | |
| |||
0 commit comments