sed 移动一行
Sed move a line
我只需要在 sed 中移动一行。我可以 select 行
sed -i '7s///'
我需要将第 7 行向上移动 2 行,使其成为第 5 行。
如果没有复杂的脚本,我在互联网上找不到任何东西可以做到这一点,我找不到将特定行移动特定次数的简单解决方案。
seq 10|sed '5{N;h;d};7G'
当第 5 行将下一行(第 6 行)追加到模式 space 中,然后将它们保存到保留 space 中并从模式 space 中删除它们;直到第 7 行,然后在第 7 行后面附加 hold space content("5\n6");现在,模式 space 是“7\n5\n6”;最后,sed 将默认在当前循环结束时打印模式 space(如果没有“-n”参数)
ed
在这方面做得更好,因为它有一个 "move" 命令可以完全满足您的需求。要将第 7 行移动到第 4 行之后的行,只需执行 7m4
。 ed
默认情况下不会写回数据,因此您需要明确发出 w
命令来写入数据:
printf '7m4\nw\n' | ed input
尽管使用更现代的工具可能更好:
ex -s -c 7m4 -c w -c q input
我只需要在 sed 中移动一行。我可以 select 行
sed -i '7s///'
我需要将第 7 行向上移动 2 行,使其成为第 5 行。
如果没有复杂的脚本,我在互联网上找不到任何东西可以做到这一点,我找不到将特定行移动特定次数的简单解决方案。
seq 10|sed '5{N;h;d};7G'
当第 5 行将下一行(第 6 行)追加到模式 space 中,然后将它们保存到保留 space 中并从模式 space 中删除它们;直到第 7 行,然后在第 7 行后面附加 hold space content("5\n6");现在,模式 space 是“7\n5\n6”;最后,sed 将默认在当前循环结束时打印模式 space(如果没有“-n”参数)
ed
在这方面做得更好,因为它有一个 "move" 命令可以完全满足您的需求。要将第 7 行移动到第 4 行之后的行,只需执行 7m4
。 ed
默认情况下不会写回数据,因此您需要明确发出 w
命令来写入数据:
printf '7m4\nw\n' | ed input
尽管使用更现代的工具可能更好:
ex -s -c 7m4 -c w -c q input