Intereting Posts
Почему неправильная раскладка клавиатуры на желтой собаке? Debian 6 Squeeze – установка build-essentials – gcc / g ++ Почему «cat / tmp / out1> / tmp / in2 &» отображается как «bash» с помощью команды «ps»? Что такое хорошее распространение, которое похоже на Amazon Linux Как переименовать историю репозитория Git в подкаталог? Как я могу заставить hostapd_cli работать в sudo на debian stretch? Установить Debian Squeeze RAID 5? Aptitude: Каков фильтр для виртуальных пакетов, которые были предоставлены? Не удается открыть как корневой терминал, так и nautilus (в Debian 7) после обновления графического драйвера Intel Поиск файлов MP3 / Ogg по тегам / параметрам из командной строки Я не могу установить драйвер TP-LINK TL-WN821N v5 на ядро ​​kali 4.9.0 хотите последнюю строку при дублировании awk? Управление музыкой iPhone из командной строки linux Как скопировать в форматированное изображение без привилегий root? извлечение / копирование диапазонов столбцов из большого файла данных

Столбец AWK в файле указывает в качестве аргумента

Я хочу написать сценарий, который суммирует мой столбец в файле. Число столбцов, которые он хочет дать в качестве аргумента. Это может быть несколько. Я не знаю, как решить это с помощью awk, чтобы суммировать несколько столбцов.

cat count.txt | awk '{ sum+=$1} END {print sum}' 

Например, этот код суммирует один столбец, равно как и количество столбцов не является постоянным? Только это зависит от того, что пользователь поставил?

Например. Я хотел бы суммировать столбец номер 2, 5, 1 или в следующий раз 6,3,2 и т. Д.

Во-первых, не нужно, чтобы cat awk знал, как читать файлы.

Вы хотите передать столбцы в виде строки с разделителями-запятыми, используя опцию -v , а затем в блоке BEGIN awk разделите строку

 awk -v cols="2,5,1" ' BEGIN {n = split(cols, ary, /,/); sum=0} {for (i=1; i<=n; i++) sum += $(ary[i])} END {print sum} ' count.txt 

split возвращает количество сгенерированных элементов, поэтому обязательно сохраните это значение, чтобы позже вы могли перебирать массив.