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

标签 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\} by/Copyright (C) \1-2013 by/'

或如 Kent 所说:

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/'

关于grep regex,替换文本文件中的特定查找,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16197406/

相关文章:

regex - Grep 单引号和美元符号

python - 在所有文件中找到 JSON 键并删除对应的键值对

python - 使用 python mjson.tool 在 Bash 中解码 JSON

grep - 反向匹配的异常 grep 行为

linux - 仅杀死特定 Java jar 的进程(实例)

regex - grep 字符串前的文本 - 正则表达式

Ubuntu:如果包含特定字符串,如何从制表符分隔文件中仅提取特定列?

linux - 在 Linux 中,如何遍历每个文件并进行替换?

linux - 如何每运行 X 次脚本就删除一个文件 - 从脚本内部管理日志文件?

shell - bash 中的 Grep 数字范围