grep regex,替换文本文件中的特定查找

use*_*147 1 grep

我正在尝试自动替换文件中的某些版权字符串。字符串是以下格式

"Copyright (C) 2004-2008 by"
Run Code Online (Sandbox Code Playgroud)

但是年份可以不同。我尝试在所有文件中找到此行,并用当前年份替换去年。

grep -r ' * Copyright (C) [0-9]\{4\}-[0-9]\{4\} by.' *
Run Code Online (Sandbox Code Playgroud)

现在如何用2013替换最后一个群组?(想从管道使用)

Lev*_*sky 5

grep不做替换。您可以尝试sed,例如:

sed 's/Copyright (C) \([0-9]\{4\}\)-[0-9]\{4\} by/Copyright (C) \1-2013 by/'
Run Code Online (Sandbox Code Playgroud)

或如肯特(Kent)所述:

sed 's/\(Copyright (C) [0-9]\{4\}\)-[0-9]\{4\} by/\1-2013 by/'
Run Code Online (Sandbox Code Playgroud)

ssed

ssed -R 's/(?<=Copyright \(C\) )([0-9]{4})-[0-9]{4}(?= by)/\1-2013/'
Run Code Online (Sandbox Code Playgroud)