Awk: печать последних N столбцов, где N передается через переменную

Моя переменная ввода $dirPath содержит путь к каталогу. Действие состоит в том, чтобы иметь возможность извлекать последние N значений в пути к каталогу, где N передается через переменную $depth . Для фиксированного значения N (скажем, 2) я могу достичь этого через

 subDir=$(echo $dirPath|awk -F "/" '{n= 2; for (--n; n >= 0; n--){ printf "%s/", $(NF-n)} print ""}') 

Однако, если я попытаюсь заменить 2 в приведенной выше команде переменной как n=$depth , переменная subDir пуста. Итак, как я могу передать значение переменной вышеуказанной команде?

2 Solutions collect form web for “Awk: печать последних N столбцов, где N передается через переменную”

Если вы хотите передать переменную bash в awk тогда вам понадобится использовать параметр aw -v :

 awk -vn=$depth -F "/"... 

Поскольку вы используете bash , вам не нужны внешние инструменты, такие как awk

 #read path constituents into array arr IFS=/ read -ra arr <<<"$dirPath" n=2 #print the last two (IFS=/; printf '%s\n' "${arr[*]:(-n)}") 
  • Извлечение одного файла из нескольких ZIP-файлов
  • Как заменить пробелы в именах файлов с помощью подчеркивания
  • Выберите конкретный диапазон полей текстового файла
  • Выполнение параллельного скрипта из одного задания Cron
  • Вывод трубы одной команды двум другим
  • Проблема с скриптом bash, выполняемая с веб-сайта
  • Как анализировать параметры в функции оболочки для навигации по нескольким проектам
  • Сценарий оболочки для выполнения сеанса telnet в ser2net
  • Как безопасно вставить пароль пользователя в файл?
  • Как принять входную строку в bash без потери кавычек?
  • Дискриминация между суб-оболочками CHLD в функции ловушки
  • Interesting Posts

    Почему я получаю «Нет виртуальной папки, прерывая», когда пытаюсь помечать сообщения в Mutt?

    Выполнение команды «ip netns exec» с использованием nsid, полученного из «ip netns list-id»

    Как аппроксимировать `dpkg -get-selections` из резервной копии / etc и / var?

    ОШИБКА: Не удалось создать Linux

    mousekeys слишком медленный в gnome3 fedora

    Как округлить числа с плавающей запятой в оболочке?

    Поведение кэш-памяти nmap и arp

    Замените данные в столбце в файле данными в строке из другого файла

    Динамически выравнивать ширину строки stdout в Bash

    SSH: Почему моя система предлагает мой закрытый ключ при попытке аутентификации с открытым ключом?

    Использование опции -remove-source-files для rsync

    inodes, сравнение потребляемого пространства (xfs, btrfs, ext4)

    FreeBSD – лучший способ установить режим vidcontrol в консоль от загрузки без прерывания информации о прокрутке буфера

    Запуск и остановка нескольких исполняемых файлов для легкой отладки

    Почему «кошка» не может читать содержимое PDF-файлов?

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