我只需要在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" 参数(