【问题标题】:Find/Replace various lines in file with find/sed via bash通过 bash 使用 find/sed 查找/替换文件中的各个行
【发布时间】:2020-02-05 17:19:03
【问题描述】:

我使用以下命令查找/替换显示路径中指定名称的文件中的文本。

我需要对不同文件中的多行使用类似的命令,其中有超过 1,000 行,所以我不能单独使用它们。

find /var/www/html/files/ -name "file.php" -print | xargs sed -i 's/Find Text/Replace Text/g'

上面在位置/var/www/html/files/(和其中的文件夹)中查找文件并找到文本“查找文本”并将其替换为“替换文本”。

如果我想在 php 文件中找到一整行并用三行新代码替换它,我该如何使用它?

我可以考虑的替代方法是在每个文件的末尾添加代码行,或者简单地将一个全新的文件复制到每个位置并覆盖之前的文件。

谢谢。

【问题讨论】:

  • 请提供一些示例输入数据和预期输出。

标签: bash sed


【解决方案1】:

假设这是我的文件:

$ cat change_version.py 
#!/usr/local/bin/python3

import json

obj=json.load(open('input.json'))
obj['version'] = "WHATEVER"
print(json.dumps(obj, indent="  ")) . <-- I want to replace this line

然后就可以了:

cat change_version.py | sed $'s/print.*/morethan\\\noneline/g'
#!/usr/local/bin/python3

import json

obj=json.load(open('input.json'))
obj['version'] = "WHATEVER"
morethan
oneline

让我知道它是否适合你。

【讨论】:

    猜你喜欢
    • 2015-06-12
    • 2019-11-29
    • 2020-02-03
    • 2020-11-15
    • 2016-01-20
    • 2015-01-22
    • 2021-04-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多