各行から1つの数字を抽出し、ここに別の数字を追加します。

各行から1つの数字を抽出し、ここに別の数字を追加します。

内容は次のようなファイルがあります。

(bookmarks
 ("Cover"
  "#01.djvu" )
 ("Title page"
  "#all_24223_to_00243.cpc0002.djvu" )
 ("Preface"
  "#all_24223_to_00243.cpc0004.djvu" )
 ...

内容を次に変更したいと思います。

(bookmarks
 ("Cover"
  "#2" )
 ("Title page"
  "#3" )
 ("Preface"
  "#5" )
...

前の数字を保持し、前のゼロを.djvu削除してから1を加算します。私はこれを行うためにawkをどのように使用するのか疑問に思います。

ありがとうございます。

ベストアンサー1

これは仕事に近いですperl

perl -pe 's/"#\K.*?(\d+)\.djvu(?=")/$1+1/ge' <file

変数を含める:

INCR=1 perl -pe 's/"#\K.*?(\d+)\.djvu(?=")/$1+$ENV{INCR}/ge' <file

または:

perl -spe 's/"#\K.*?(\d+)\.djvu(?=")/$1+$incr/ge' -- -incr=1 <file

おすすめ記事