Печать частоты количества столбцов в строках в текстовом файле

  1. Запуск одних и тех же команд на нескольких хостах
  2. Что, если у меня есть x серверов, которые все одинаковы, и я хочу выполнить одну и ту же команду на каждом из них? Как я могу сделать это с помощью одной или двух команд?

    Вы можете запустить скрипт, который получает в качестве параметра имя хоста и выполняет те же команды для имени хоста в параметре

    1. Подключение через SSH к нескольким серверам

    Настоятельно рекомендуется использовать ssh, и соединение ssh будет без пароля

    см. этот ответ

0
28.05.2017, 00:00
4 ответа

Если у вас установлена ​​последняя (> 4.0 )версия GNU awk:

gawk '
  {a[NF]++} 
  END {
    PROCINFO["sorted_in"]="@ind_num_asc"; 
    for (i in a) printf "%d (%d)\n", a[i], i;
  }' file
4 (1)
1 (3)
3 (4)
1 (9)
2
28.01.2020, 02:15

gawkподход (с использованием функции asorti):

awk '{a[NF]++}END{ asorti(a,b); for(i in b) printf("%d (%d)\n",a[b[i]],b[i]) }' file

Вывод:

4 (1)
1 (3)
3 (4)
1 (9)

  • asorti(a,b)- сортировка массива по индексам
2
28.01.2020, 02:15

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

a=$(sed 's/\([0-9]\+\)/1/g' file | sort | uniq -c)
dups=$( echo "$a" | cut -d' ' -f7 )

И после этого вы можете подсчитать количество слов в каждой строке, чтобы определить, сколько столбцов в строке.

words=$(echo "$a" | cut -d' ' -f8- | awk '{print NF}')
paste <(echo "$dups") <(echo "$words")
4       1
1       3
3       4
1       9
1
28.01.2020, 02:15

Самая простая версия

cat data.txt | awk '{counts[NF] += 1} END { for (row_count in counts) { printf "%d (%d)\n", counts[row_count], row_count; }'

. Она просто использует переменную NF, которая дает количество полей в строке и обновляет соответствующее значение, связанное с ним в Словарь. Затем в конце потока он просто перебирает все ключи словаря и выводит их в запрошенном формате.

1
28.01.2020, 02:15

Теги

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