Как вывести уникальный номер после?

Это метод, который я нашел, столкнувшись с той же проблемой:

for f in *; do mv "$f" `echo $f | tr ' ' '_'`; done

Я писал файл скрипта bash для автоматического обновления сертификатов ssl.

1
27.12.2020, 00:32
1 ответ

Следующая команда awkизменит каждую строку ввода таким образом, что первое поле будет скопировано в новое последнее поле с префиксом тире. Затем первое поле заменяется номером строки, за которым следует точка.

awk '{ $(NF+1) = "-"; $(NF+1) = $1; $1 = NR "."; print }'

Таким образом, объединив два вызова awkс sort | uniq -cв исходном конвейере и пометив его в конце:

awk '
    $9 ~ /^40[34]$/ { count[$7]++ }
    END             { for (a in count) print count[a], a }' log.txt |
sort -nr |
awk '{ $(NF+1) = "-"; $(NF+1) = $1; $1 = NR "."; print }'

Если у вас есть GNU awk(, обычно встречающийся, например, на. Системы Linux ), выпуск 4.0 или выше, вы можете дополнительно выполнить sort -nrв awkтакже:

awk '
    $9 ~ /^40[34]$/ { count[$7]++ }
    END             { 
        PROCINFO["sorted_in"] = "@val_num_desc"
        for (a in count)
            print ++i ".", a, "-", count[a]
    }' log.txt
8
18.03.2021, 22:40

Теги

Похожие вопросы