ファイル内の著作権文字列を自動的に置き換えようとしています。文字列は次の形式です
"Copyright (C) 2004-2008 by"
しかし、年は異なる場合があります。すべてのファイルでこの行を見つけて、昨年を現在のものに置き換えようとします。
grep -r ' * Copyright (C) [0-9]\{4\}-[0-9]\{4\} by.' *
最後に見つかったグループを 2013 に置き換えるにはどうすればよいでしょうか? (パイプから使いたい)
ファイル内の著作権文字列を自動的に置き換えようとしています。文字列は次の形式です
"Copyright (C) 2004-2008 by"
しかし、年は異なる場合があります。すべてのファイルでこの行を見つけて、昨年を現在のものに置き換えようとします。
grep -r ' * Copyright (C) [0-9]\{4\}-[0-9]\{4\} by.' *
最後に見つかったグループを 2013 に置き換えるにはどうすればよいでしょうか? (パイプから使いたい)
grep
交換は行いません。sed
たとえば、次のように試すことができます。
sed 's/Copyright (C) \([0-9]\{4\}\)-[0-9]\{4\} by/Copyright (C) \1-2013 by/'
またはケントが指摘するように:
sed 's/\(Copyright (C) [0-9]\{4\}\)-[0-9]\{4\} by/\1-2013 by/'
またはssed
:
ssed -R 's/(?<=Copyright \(C\) )([0-9]{4})-[0-9]{4}(?= by)/\1-2013/'
これはあなたの質問に答えるために私が思いついたものです:
sed -i 's/Copyright (C) \([0-9]\{4\}\)-[0-9]\{4\} by/Copyright (C) \1-2013 by/' `find -type f`
@Lev によって提案された sed クエリを使用していますが、ファイルを直接操作しています。-i を含めて、変更をファイルに保存しました。また、sed が再帰的にファイルを検索できるように、コマンド ラインの最後に「検索」を含めました。
使用される引用符の種類に注意してください。最初の 2 つは単純な引用符ですが、最後の 2 つは逆引用符で、シェルに「find」コマンドを実行させ、その結果を「sed」のパラメーターとして使用するために使用されます。