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)}") 
  • Использование скрипта Fifo
  • Быстрый способ найти USB-идентификатор на основе USB-пути
  • Grep для строки, а затем повторить строку из записи
  • Проблема со ссылкой на рабочий каталог в цикле сценария оболочки
  • Извлечение строк между специальными символами
  • Как я могу проверить, внесли ли rsync какие-либо изменения в bash?
  • Могу ли я заставить столбцы испускать пробелы вместо вкладок?
  • Как я могу более эффективно собирать данные от пользователей на vm?
  • Найти все физические интерфейсы во FreeBSD
  • Используя sed с herestring (<<<) и прочитайте -a
  • VM-клонирование VS-скриптовая настройка / конфигурация
  • Linux и Unix - лучшая ОС в мире.