GAWK Печать строки в STDOUT с опцией -i inplace - PullRequest
1 голос
/ 28 октября 2019

Я хотел бы запустить скрипт GNU AWK, который редактирует файлы на месте (например, с опцией -i inplace) и должен напечатать имена файлов, над которыми он работает, в STDOUT. Есть ли способ сделать это? Следующее просто добавляет имя файла в качестве первой строки в измененном файле, а не выводит имя файла в командной строке:

BEGINFILE {
  print FILENAME
}

1 Ответ

3 голосов
/ 28 октября 2019

Вот обходной путь;удалите -i inplace из командной строки (но не обязательно, см. -e / -f) и поместите следующую в самом начале вашего скрипта. Перед началом обработки содержимого файла это временно отключит inplace и напечатает FILENAME. Тогда правило inplace BEGINFILE снова включится.

BEGINFILE {
    if (inplace::filename != "") {
        inplace::end(inplace::filename, inplace::suffix)
        inplace::filename = ""
    }
    print FILENAME
}

@include "inplace"

См. , как inplace реализован для лучшего понимания.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...