如何替换大文件上的字符串?

如何替换大文件上的字符串?

我的 Ubuntu 服务器上有一个很大的 WordPress SQL 转储文件,大约 7GB。由于我要更改域名,所以我需要替换文件中的域名。我想知道如何通过命令行执行此操作。

dev.example.com

需要替换为

example.com

答案1

您可以使用 sed 进行就地编辑

sed -i -e 's/dev\.example\.com/example\.com/g' filename

答案2

我不知道你的sed标签有多严格,但有一个通用的方法可以用以下命令替换文件中的字符串:

<script> <file> <old_string> <new_string>

你可以使用下面的小 Python 脚本:

#!/usr/bin/env python3

import sys
file = sys.argv[1]; old_string = sys.argv[2]; new_string = sys.argv[3]
with open(file) as src:
    lines = src.read()
print(lines.replace(old_string, new_string))

将脚本复制到一个空文件中,另存为replace.py使其可执行(无需前缀即可运行python3),通过以下命令运行它:

/path/to/replace.py /path/to/file dev.example.com example.com

如果 old_string 或 new_string 中有空格,请使用引号:

/path/to/replace.py /path/to/file 'old string with spaces' 'new string with spaces'

相关内容