相关疑难解决方法(0)

如何确保插入到`sed` 替换中的字符串会转义所有元字符

我有一个脚本,它读取文本流并生成一个 sed 命令文件,该文件稍后使用sed -f. 生成的 sed 命令如下:

s/cid:image002\.gif@01CC3D46\.926E77E0/https:\/\/mysite.com\/files\/1922/g
s/cid:image003\.gif@01CC3D46\.926E77E0/https:\/\/mysite.com\/files\/1923/g
s/cid:image004\.jpg@01CC3D46\.926E77E0/https:\/\/mysite.com\/files\/1924/g
Run Code Online (Sandbox Code Playgroud)

假设生成sed命令的脚本类似于:

while read cid fileid
do
    cidpat="$(echo $cid | sed -e s/\\./\\\\./g)"
    echo 's/'"$cidpat"'/https:\/\/mysite.com\/files\/'"$fileid"'/g' >> sedscr
done
Run Code Online (Sandbox Code Playgroud)

如何改进脚本以确保cid字符串中的所有正则表达式元字符都被正确转义和插入?

sed quoting

25
推荐指数
1
解决办法
6104
查看次数

在另一个文件中匹配模式后从文件内嵌插入文本

我正在尝试使用 sed 获取文件的内容并将其插入到另一个文件中的匹配模式之后。我的问题与此问题非常相似,但我希望插入文件的内联内容而不是新行。我怎样才能做到这一点?

使用我引用的示例问题,第一个答案正是我想要的;但是,我希望插入发生内联:

sed '/First/r file1.txt' infile.txt 
Run Code Online (Sandbox Code Playgroud)

我要插入的实际数据是一个 JSON 文件:

[
    {
        "foo": "bar", 
        "baz": "biff",
        "data": [
            {
                "a": 1945619, 
                "b": [
                    {
                        "c": 512665, 
                        "d": "futz"
                    }
                ]
            }
        ]
    }
]
Run Code Online (Sandbox Code Playgroud)

sed awk text-processing

8
推荐指数
3
解决办法
8370
查看次数

标签 统计

sed ×2

awk ×1

quoting ×1

text-processing ×1