У меня есть файл, который выглядит так:

"string",192.168.1.0,,TX,192.168.1.2,,,100,0,0,10,10,10,,
"string",192.168.1.0,,TX,192.168.1.1,,,100,0,0,10,10,10,,
"string",192.168.1.0,,TX,192.168.1.4,,,100,0,0,10,10,10,,
"string",192.168.1.0,,TX,192.168.1.2,,,100,0,0,10,10,10,,

С помощью этой команды я ожидаю, что она извлечет второй IP-адрес и в основном перечислит, сколько раз этот IP указан в этом файле.

cat originalFile.txt | awk -F "," '{print $5}' | sort | uniq -c > outputFile.txt

Это сортирует неправильно. Я хочу, чтобы выходной файл выглядел как показано ниже (упорядочено по первому столбцу)

1 192.168.1.1
1 192.168.1.4
2 192.168.1.2

Я попытался изменить раздел сортировки на

sort -n -k1

Я думаю, проблема в том, что я сортирую до того, как он выполняет uniq, но любой другой порядок, кажется, нарушает процесс. Прямо сейчас мое решение состоит в том, чтобы просто запустить две команды, подобные этой.

    cat originalFile.txt | awk -F "," '{print $5}' | sort | uniq -c > outputFile1.txt
    sort -n -k1 outputFile1.txt > outputFile2.txt

Очевидно, что использование временного файла для этого не идеально, и я уверен, что мне просто нужно немного изменить это и поместить в другом порядке. Любая помощь приветствуется.

1 ответ1

1

Сортировка по uniq, затем сортировка по последнему заказу:

cat originalFile.txt | awk -F "," '{print $5}' | sort | uniq -c | sort -n

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .