Запретить awk удалять "\" (обратную косую черту) в переменной

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

rpm -qp --dump *.rpm  | awk '{ printf "%7s %8s %8s %8d %s %s\n", $5, $6, $7, $2, strftime("%c", $3), $1 }'

Адаптация вызова strftime()и вывода режима/разрешений для имитации поведения lsоставлена ​​читателю в качестве упражнения.

4
19.09.2019, 17:33
1 ответ

Это проблема, связанная с тем, как awkобрабатывает значение, переданное с помощью -v. Он интерпретирует обратную косую черту в переданной строке.

Вместо этого передайте его через переменную окружения:

here="$(cygpath -w "$PWD")" awk... '{ print... ENVIRON["here"]... }'

ENVIRON— это ассоциативный массив в awk, который содержит значения переменных в текущей среде с ключами по именам.

Также относится к вашему коду:

8
27.01.2020, 20:49

Теги

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