批量查找和替换的终端命令

Terminal Command for Batch Find and Replace

在过去的一个多小时里,我一直在尝试寻找如何在 Mac OS X 上的终端中进行批量查找和替换。我找到了不同版本的代码,但很难使其正常工作。到目前为止,我已经找到了一串有效的代码,但它只适用于一个 term/character.

我想做的是同时查找和替换一个文本文件中的多个字符。

例如:

Find §, replace with ก
Find Ø, replace with ด
Find ≠, replace with ห
Find £, replace with ้

到目前为止有效的代码是(但仅适用于一个字符):

sed -i '' s/Ø/ด/ [textfile.txt]

谁能帮帮我?

您的使用模式非常普遍,因此您可以使用一个特定的实用程序,即 tr

tr abc ABC < input.txt > output.txt

您使用两个字符串(此处为 abcABC)来指示 tr 您想要的替换(此处,将 a 替换为 AbB 等)。


sed 相比,tr 的用法更加通用,用于搜索和替换每一行中的第一个匹配项

sed 's/src1/rep1/' < in > out

要搜索和替换每一行中的每个匹配项,请将 g 开关添加到 s 命令

sed 's/src1/rep1/g' < in > out

最终要进行多重搜索和替换,您必须用分号分隔 s 命令

sed 's/src1/rep1/g;s/src2/rep2/;s/src3/rep3/g' < in > out

请注意,在上面的示例中,我对第一个和第三个查找和替换使用了 g 开关(逐行全局替换),而不是第二个...您的用法可能不同,但我希望您已经发现了规律,不是吗?