gawk '{
sub(/#.*\.djvu/, "#" $1 + 1 ".djvu")
print
}' FPAT='[0-9]+\.djvu' input.txt
Идея следующая:
.djvu
с начальными цифрами из имени файла djvu
, используя шаблон [0-9]+\.djvu
(FPAT
). Пример:исходное имя файла — #all_24223_to_00243.cpc0002.djvu
, извлеченная часть будет 0002.djvu
. djvu
имя файла #.*\.djvu
на извлеченное, предварительно увеличив его на 1
. Пример:взять целую строку $0
и подставить #all_24223_to_00243.cpc0002.djvu
внутри нее, чтобы0002.djvu + 1
(это выражение приводило к обычному числу 3
, из-за того, как работает преобразование строки в число в gawk
). Добавьте к нему знак #
и расширение .djvu
. Результат:#3.djvu
. Это решение будет работать только для строк с одним именем файла djvu
, как в вашем образце ввода.
Вход
(bookmarks
("Cover"
"#01.djvu" )
("Title page"
"#all_24223_to_00243.cpc0002.djvu" )
("Preface"
"#all_24223_to_00243.cpc0004.djvu" )
Выход
(bookmarks
("Cover"
"#2.djvu" )
("Title page"
"#3.djvu" )
("Preface"
"#5.djvu" )