Как внести изменения в следующий запрос, чтобы он извлекал только год из полной даты, возвращаемой командой `tar -tvf acts.tar`, вместо использования `index($4, ":")`? Предоставленный запрос выглядит так: <pre><code class="bash">tar -tvf acts.tar | nawk -v yearNOW=$(date +%Y) '{year= (index($4, ":")) ? yearNOW : $4; arr[year] += $3} END {for (i in arr) printf("%s -> [%d]\n", i, arr[i])}'</code></pre> Причем вывод команды `tar -tvf acts.tar` выглядит следующим образом: <b>-rw-r--r-- dmitriy/dmitriy 9844 2023-06-16 19:33 acts/actFirst_53632_1102.htm</b> Нужно, чтобы в место указания года использовалась только часть полной даты.
Чтобы извлечь только год из полной даты, возвращаемой командой `tar -tvf acts.tar`, можно воспользоваться функцией подстроки в `awk`. Вместо использования `index($4, ":")`, нужно просто извлечь первые пять символов из поля с датой, так как формат даты — это `YYYY-MM-DD`. Вот обновленный запрос: ```bash tar -tvf acts.tar | nawk -v yearNOW=$(date +%Y) '{year = substr($4, 1, 4); arr[year] += $3} END {for (i in arr) printf("%s -> [%d]\n", i, arr[i])}' ``` В этом новом запросе: - `substr($4, 1, 4)` извлекает первые четыре символа из поля `$4` (где находится дата), что и есть год. - Массив `arr` заполняется по ключу `year`, что теперь будет содержать только год. Таким образом, вывод будет содержать количество файлов в архиве, сгруппированных по годам.
string='-rw-r--r-- dmitriy/dmitriy 9844 2023-06-16 19:33 acts/actFirst_53632_1102.htm' year=$( awk '{print substr($4,1,4)}' <<<"$string" )