Возможно ли напечатать повторяющийся диапазон аргументов через cli из csv? (см. пример)

У меня есть сотни журналов, распространяющихся по нескольким тысячам виртуальных машин, и я пытаюсь создать несколько скриптов для быстрого сканирования журналов, и я выяснил большую часть презентации и хотел узнать, есть ли простой способ использовать что-то вроде awk, printf и т. д., которые я знаю, как использовать, но специально для печати повторяющегося диапазона значений из файлов журнала?

Пример:

awk -F, '{printf $(1..5)}' huge_log_file.csv column1 column2 column3 column4 column5 etc. 

Я знаю, как правильно прокручивать, форматировать, отделять и т. Д. Печатный вывод, но думал, что было бы неплохо, если бы я мог указать диапазон полей, которые я хотел бы распечатать.

Я уточню свой вопрос, если я выясню, как это сделать с предложенными аналогичными вопросами и / или самостоятельно.

Благодаря!

EDIT: я знаю, как печатать $ 1 $ 2 $ 3 вручную, но не включил его в свой пример

EDIT 2: Я также знаю, как подсчитывать количество полей с awk, используя NF для дальнейшего изменения диапазона, что является моей долгосрочной целью.

2 Solutions collect form web for “Возможно ли напечатать повторяющийся диапазон аргументов через cli из csv? (см. пример)”

Диапазоны, начинающиеся с первого поля

Рассмотрим этот тестовый файл:

 $ cat input.csv a,b,c,d,e,f,g,h,i,j 

По крайней мере, с GNU awk мы можем напечатать первые пять (или других чисел) таких полей:

 $ awk -F, '{NF=5; print}' OFS=, input.csv a,b,c,d,e 

Для тех, кто ценит лаконичность по большей ясности, мы могли бы эквивалентно написать:

 $ awk -F, '{NF=5;} 1' OFS=, input.csv a,b,c,d,e 

Динамическое изменение размера

Чтобы оставить последние 2 поля, независимо от того, сколько полей предшествует этим двум:

 $ awk -F, '{NF-=2; print}' OFS=, input.csv a,b,c,d,e,f,g,h 

Другие диапазоны

Для печати запуска и остановки с произвольными полями необходим цикл:

 $ awk -v first=3 -v last=6 -F, '{for (i=first;i<=last;i++) printf "%s%s",$i,(i==last?ORS:OFS)}' OFS=, input.csv c,d,e,f 

Для печати из третьего поля и динамического оставления последних двух полей:

 $ awk -v first=3 -F, '{last=NF-2; for (i=first;i<=last;i++) printf "%s%s",$i,(i==last?ORS:OFS)}' OFS=, input.csv c,d,e,f,g,h 

Просто быстрый момент; awk намного более гибкий, но если все, что вам нужно, это определенный диапазон полей, используйте cut :

 cut -d, -f1-5 huge_log_file.csv 

Это намного проще, чем цикл awk если это все, что вам нужно.

  • Удалить до первого вхождения, отредактировать эту строку и распечатать оставшиеся строки без изменений
  • Извлечь абзац, разделенный на *** с помощью AWK
  • Как использовать команду sed для изменения записи файла в строке в сценарии оболочки?
  • sed или tr однострочный, чтобы удалить все числовые цифры
  • Регулярные команды и команды с командой sed
  • sed: многострочная замена блока конфигурации
  • Удалите строку, используя определенные значения (-)
  • Как извлечь строку между двумя шаблонами с помощью sed в Linux, а второй шаблон повторяет больше строк в файле
  • Скопируйте первые 2 строки из файла, а затем удалите строки
  • Как анализировать файл данных для извлечения определенных данных и формата для другого использования?
  • Как удалить строки в файле с определенной позиции до конца файла
  • Interesting Posts

    Git не перезаписывает символическую директорию при проверке филиала

    Метаданные mdadm: следует ли принимать меры предосторожности для предотвращения перезаписи суперблока?

    Как получить данные инфракрасного изображения с помощью стандартного сканера epson v700?

    ошибка виртуализации: методы установки "не могут быть указаны для гостей контейнера"

    Как использовать sed или awk для извлечения определенных строк в файле

    маршрутизация нескольких маршрутов для определенного порта src

    Как установить несколько значений в одну и ту же переменную в UNIX?

    Полная установка на RAID1 + LVM

    SOGo без Samba4 Active Directory

    Обновление скручивания в Centos 5.6

    Использует ли элементарная ОС стандартные AppIndicators?

    Tcl regexp: Как проверить, содержит ли переменная число?

    Разрешение запрещено: почему не удается запустить mongodb на / dev / sda4?

    `sudo tar`, но имеет полученный файл

    использование root в mkdir в другом домашнем каталоге пользователей

    Linux и Unix - лучшая ОС в мире.