sedを使用して数値を減らす

sedを使用して数値を減らす

.txtを使用してファイル内のPDFのメタデータを抽出し、各ブックマークの値を整数だけ減らそうとpdftkします。次の行がBookmarkPageNumberあります.txt

BookmarkBegin
BookmarkTitle: Preface
BookmarkLevel: 1
BookmarkPageNumber: 10
BookmarkBegin
BookmarkTitle: Author
... and so on

これを行うには、sedの代替コマンドを使用しようとしています。これが今まで私が持っているものです。

// $1 is the source .txt file; $2 is the decrement
// __ is a placeholder for the variable with the original value
cat $1 | sed "s/BookmarkPageNumber: [0-9]*/BookmarkPageNumber: `expr __ - $2`/" | cat > metadata.txt

__元の値を変数に入れてから、同じsed式でプレースホルダをどのように置き換えることができますか?

ベストアンサー1

これにはawk算術演算をサポートしているので、使用することをお勧めします。

cat $1 | awk -v d=$2 '/BookmarkPageNumber:/{$2-=d}1'

おすすめ記事