为什么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",
所以如果我们把 original
和 new
并排放置,它看起来像这样:
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
中,然后所有其他匹配。
我正在尝试编写一个脚本,使用 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",
所以如果我们把 original
和 new
并排放置,它看起来像这样:
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
中,然后所有其他匹配。