将文本文件中的一行移动到文本文件中的另一行之前的最快方法?

将文本文件中的一行移动到文本文件中的另一行之前的最快方法?

我在一个文本文件中有第 55 行,我想将其移到同一文本文件中的第 23 行之前。我知道你可以将行向上移动一定行数1,2但是是否可以将一行追加或添加到另一行,而不是在文本文件中向上或向下移动行的详细方式?

我愿意接受使用 vim、sed 或任何其他命令行工具的答案,但越简洁越好

更新:

sed命令i在行前插入文本,这与我正在寻找的内容类似,只是我想在行前插入一行

答案1

可编写脚本的编辑器使这变得非常简单!

printf '%s\n' '55m22' 'wq' | ed -s input

这将发送两个命令到ed(编辑名为 的文件input):

  1. 55m22-- 将第 55 行移到第 22 行之后
  2. wq-- 将文件保存回磁盘并退出。

答案2

短一点:

ex input <<<"55m22|wq"

答案3

vi比 in稍长一些ed

vi input
55Gdd23GPZZ

55G...转到第 55 行
dd...删除一行
23G...转到第 23 行
P...将删除的行粘贴到第 23 行之前
ZZ...写入文件并退出

相关内容