web-dev-qa-db-ja.com

テキストファイル内の行をテキストファイル内の別の行の前に移動する最も速い方法は?

同じテキストファイルの23行目の直前に移動したいテキストファイルに55行目があります。私はあなたが特定の数の行だけ上に行を移動できることを知っています 12 の冗長な方法の代わりに行を別の行に追加または追加することは可能ですテキストファイルを行の上または下に移動しますか?

Vim、sed、またはその他のコマンドラインツールを使用して回答を受け入れますが、簡潔であるほど良い

更新:

sedコマンドiは、行の前に行を挿入することを除いて、探しているものと同様の行の前にテキストを挿入します

7
MyWrathAcademia

スクリプト可能なエディターにより、これは非常に簡単です。

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

これにより、2つのコマンドがedに送信されます(inputという名前のファイルを編集します)。

  1. 55m22-55行目を22行目の後に移動します
  2. wq-ファイルをディスクに保存して終了します。
11
Jeff Schaller

少し短い:

ex input <<<"55m22|wq"
4
steve

viの方がedよりも少し長いです:

vi input
55Gdd23GPZZ

55G ... 55行目に移動
dd ... 1行削除
23G ... 23行目に移動
P ...削除された行を23行目の前に貼り付けます
ZZ ...ファイルに書き込んで終了

3
Jim L.