bash - regular - sed用法




如果數字不總是相同,如何在多個文件中增加一個數字? (2)

使用awk - 這正是正確的工具:

awk '/Release: [0-9]+/ { printf "Release: %d\n", $2+1 }' < $file > $file.new

翻譯:

  • 搜索包含“Release:”的行,後跟一個或多個數字。
  • 打印“版本:”後面跟著一個數字和一個換行符。 數字是輸入行中的第二個字(數字),加上1。

我有幾個文件包含這一行

Release: X

我想在所有文件中增加X.

如果X在文件之間是不變的,我可以用一個bash腳本循環遍歷這些文件($ 1包含前面的版本號和$ 2新的版本,即$ 1 + 1):

sed 's/Release: '$1'/Release: '$2'/' <$file >$file.new

現在,如果文件的版本號不同,該怎麼辦?

sed可以嗎?

我應該使用另一種工具嗎?


這個perl單線程將和awk腳本一樣,但不會破壞文件的其餘部分或其他包含版本的行。

 perl -pe "$_=~s/Release: (\d+)/'Release: '. ($1+1)/e;" < file > file.new






sed