seq 10|sed '5{N;h;d};7G'
Run Code Online (Sandbox Code Playgroud)
当到第 5 行时,将下一行(第 6 行)追加到模式空间中,然后将它们保存到保留空间中,并从模式空间中删除它们;到第 7 行,然后在第 7 行后面附加保留空间内容(“5\n6”);现在,模式空间是“7\n5\n6”;最后,sed将默认打印当前循环结束时的模式空间(如果没有“-n”参数)
ed在这方面做得更好,因为它有一个“移动”命令,可以完全满足您的要求。要将第 7 行移动到第 4 行之后,只需执行7m4。 ed默认情况下不写回数据,因此您需要显式发出命令w来写入数据:
printf '7m4\nw\n' | ed input
Run Code Online (Sandbox Code Playgroud)
尽管使用更现代的工具可能更好:
ex -s -c 7m4 -c w -c q input
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7129 次 |
| 最近记录: |