赛德移动一条线



我只需要在sed中向上移动一行。我可以选择带有

sed -i '7s///'

我需要将第 7 行向上移动 2 行,因此它将是第 5 行。

如果没有复杂的脚本,我在互联网上找不到任何东西来做到这一点,我找不到将特定行移动特定次数的简单解决方案。

ed

在这方面做得更好,因为它有一个"move"命令,可以完全按照你想要的方式做。 要将第 7 行移动到第 4 行之后的行,只需执行7m4。 默认情况下,ed不会写回数据,因此您需要显式发出w命令来写入数据:

printf '7m4nwn' | ed input

尽管使用更现代的工具可能更好:

ex -s -c 7m4 -c w -c q input
seq 10|sed '5{N;h;d};7G'

当最多第 5 行将下一行(第 6 行(附加到模式空间中时,将它们保存到保留空间中并从模式空间中删除它们; 直到第 7 行,然后将保留空间内容("56"(附加到第 7 行后面; 现在,模式空间为 "756";最后,sed 默认在当前周期结束时打印图案空间(如果没有 "-n" 参数(

最新更新