为什么sed会删除错误范围的行

Why does sed delete the wrong range of lines

我正在尝试编写一个脚本,使用 sed 命令删除特定的 运行ge 行。我首先打印出这些行。

    sed -n '482,486p' original.json
                {
                    "vlans": "ALL",
                    "hostname": "hostname",
                    "interface": "interface"
                },

在确认这些行后,我执行了以下代码

sed '482,486d' original.json > new.json

当我 运行 diff 命令时,我得到了以下结果

diff original.json new.json
484,488d483
<                     "hostname": "hostname",
<                     "interface": "interface"
<                 },
<                 {
<                     "vlans": "ALL",

我的问题是,为什么当我指定要删除第 482-486 行时,第 484-448 行的 运行ge 被删除,我该如何修复它。任何帮助将不胜感激

你没有给我们足够的信息来重现错误,但我会冒险。

我的猜测是原始文件的第 487 和 488 行是

{
    "vlans": "ALL",

所以如果我们把 originalnew 并排放置,它看起来像这样:

481 ...     481 ...
482 {       487 {
483 vlans   488 vlans
484 host    489 ...
485 int
486 }
487 {
488 vlans
489 ...

因此从 original 中删除了第 482-486 行,但是 diff 看到所有匹配到第 483 行的内容,然后 original 中的 5 行 484-488 没有出现在 new 中,然后所有其他匹配。