使用 sed 替换/附加包含 :: 的字符串的批处理文件 - 如何?

问题描述 投票:0回答:0

我有一个批处理文件,它使用 sed 替换文本文件(主机)每一行中的多个字符串,然后在每一行的开头添加 ::[space]。嗯,这就是目标......

使用

sed 是因为必须保留每一行,而不仅仅是匹配的行

目前,每个搜索/替换都是一个单独的批处理行。 挑战是 :: 既是文本文件和搜索词的合法部分,也是批处理中的保留“词”,表示后面的所有内容都是评论。

这些线路将无法正常工作:

sed -i s/::1//g hosts
sed -i s/:://g hosts
... some other stuff happens here like sort and awk (to dedupe)...
sed -i "s/^/:: /" hosts

目标是完善操作顺序,然后更改结构,以便为 sed 提供一个文本文件,其中包含所有要删除的术语,因此 sed 只需要通过文本文件一次。

我试图找到一种方法来转义那些 :: 字符,但我找到的所有参考资料(robvanderwoude 等)都没有显示示例,所以...... 我试图通过使用 ^:^: 来转义 :: ,这导致 sed 崩溃(我假设,批处理在该调用后停止。) 我还尝试将这些行更改为:start "" "sed and arguments" 这并没有阻止解析为评论。

如何编写批处理文件,使其将 sed 与 :: 作为 sed 调用参数的一部分?

string batch-file sed replace reserved
© www.soinside.com 2019 - 2024. All rights reserved.