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

grep regex,替换文本文件中的特定查找,grep,Grep,我正在尝试自动替换文件中的某些版权字符串。字符串的格式如下 "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

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

"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/\1-2013 by/'
或:

格雷普不做替换。您可以尝试sed,例如:

或者正如肯特所说:

sed 's/\(Copyright (C) [0-9]\{4\}\)-[0-9]\{4\} by/\1-2013 by/'
或:


这就是我回答你问题的答案:

sed -i 's/Copyright (C) \([0-9]\{4\}\)-[0-9]\{4\} by/Copyright (C) \1-2013 by/' `find -type f`
我使用@Lev提出的sed查询,但直接对文件进行操作。我包含了-I以保存对文件的更改。我还在命令行末尾添加了一个find,以便sed递归地查找文件


请注意使用的不同类型的引号。前两个是简单引号,后两个是反引号,用于使shell运行find命令并将其结果用作sed的参数

这是我为回答你的问题而想到的:

sed -i 's/Copyright (C) \([0-9]\{4\}\)-[0-9]\{4\} by/Copyright (C) \1-2013 by/' `find -type f`
我使用@Lev提出的sed查询,但直接对文件进行操作。我包含了-I以保存对文件的更改。我还在命令行末尾添加了一个find,以便sed递归地查找文件


请注意使用的不同类型的引号。前两个是简单引号,后两个是反引号,用于使shell运行find命令并将其结果用作sed的参数

+1,这是sed的工作\我可以从版权开始,节省一些打字时间。同样从这个问题上,我觉得OP需要-I。无论如何,回答得不错@肯特:说得好,谢谢。至于-i标志:我也这么认为,但操作说明:希望使用来自管道。无论如何,-我现在被提到了。事实上,-i用于保存文件:非常感谢两者,这正是我所寻找的。+1,这是sed的工作\我可以从版权开始,节省一些打字时间。同样从这个问题上,我觉得OP需要-I。无论如何,回答得不错@肯特:说得好,谢谢。至于-i标志:我也这么认为,但操作说明:希望使用来自管道。无论如何,-我现在被提到了。事实上,-i用于保存文件:非常感谢两者,这正是我要找的。