Asumiendo datos en archivoindata
:
$ awk '{ ++c[$NF] } END { for (i in c) print c[i], i }' indata
1 /api/2.3/logging
1 /api/3.0/security
6 /api/2.3
2 /api/3.0
1 /api/3.0/logging
1 /api/2.3/security
El script awk
realiza un seguimiento del número de veces que se han mostrado los datos de la última columna e imprime un resumen de esta información al final.
Para obtener solo la versión número , use -F '/'
y reemplace $NF
con $3
.
Alternativamente:
$ cut -d ' ' -f 3 indata | sort | uniq -c
6 /api/2.3
1 /api/2.3/logging
1 /api/2.3/security
2 /api/3.0
1 /api/3.0/logging
1 /api/3.0/security
Esto elimina el tercer espacio -columna separada de los datos y los ordena. uniq -c
luego cuenta cuántas veces ocurre cada entrada única.
Para obtener solo el número de versión con esta variación, reemplace -d ' '
con -d '/'
en la llamada a cut
.
rm OUTPUT/*
удаляет все файлы в папке OUTPUT
. >>
добавляет вывод команды в файл с именем log_${ENV}
. Обычно это только перенаправляет сообщения из stdout (rm без параметра -v
ничего не должно записывать в stdout ).
2>&1
перенаправляет поток 2 (это stderr, где rm записывает свои сообщения об ошибках )в поток 1 (stdout ), который перенаправляется в файл.
Таким образом, эта команда удаляет файлы и записывает ошибки в файл журнала, если таковые имеются.
Команда идентична
rm OUTPUT/* 2>>log_${ENV}
Как и в другом вашем вопросе , фигурные скобки здесь ничего особенного не сделают. См. также мой ответ там о ENV
.
Команда удаляет все, что соответствует OUTPUT/*
. Если есть какие-либо ошибки, они добавляются к данному выходному файлу.
В зависимости от оболочки и установленных опций шаблон OUTPUT/*
может не только соответствовать всем именам в каталоге OUTPUT
, но и совпадать с именами скрытых файлов и каталогов, а может и не совпадать.
Утилита rm
не будет выводить данные на свой стандартный вывод (, поэтому команду можно переписать, как указано выше ),но может выдавать ошибки при удалении файлов, которые не существуют или у текущего пользователя нет разрешения на удаление, или если он пытается удалить каталоги (без-r
). Эти сообщения об ошибках будут добавлены к данному файлу. Именно использование>>
(вместо>
)заставляет оболочку открывать выходной файл для добавления, а не для перезаписи.
В исходной команде >>log_${ENV} 2>&1
давало командной оболочке указание открыть файл для добавления и отправить ему стандартный поток вывода утилиты rm
. Затем оболочка также с битом 2>&1
отправит стандартный поток ошибок в то же место. Числа 1
и 2
обозначают стандартный поток вывода и стандартный поток ошибок соответственно, а когда число не используется, подразумевается стандартный поток вывода.