
タブで区切られた形式のレコードを2行含むファイルがありますが、vimエディタのパターンマッチングを使用して、タブで区切られた値を持つレコードを1行にソートしたいと思います。
前任者。
Abc PQR XYZ NMW
XYX PQR LMW
PLX PXQ LPN PWF
XYQ PLP PMQ LWP
レコードの最初の行にレコードの2番目の行を追加したいと思います。私が望む出力形式は次のとおりです。
Abc PQR XYZ NMW XYX PQR LMW
PLX PXQ LPN PWF XYQ PLP PMQ LWP
私の問題を解決するために、次のコマンドを試しました。
:%s/\n(\w\+.*)/\t\1/cgi
これにより、データの各行が最初の行を除いて前のタブ文字に置き換えられます。
この問題を解決するために、vimパターンマッチングと置換をどのように使用できますか?
答え1
どうですか?
:%s/\n\s\+/\t/gc
これにより、空白が続く改行文字が見つかり、[すべて]タブに置き換えて行を結合します。
答え2
最初の行は常に文字で始まり、2番目の行は常にタブで始まることがわかっている場合、最も簡単な方法はおそらく:g
(正規表現に一致するすべての行でexコマンドを実行する)とj!
(スペースを削除せずに結合)を使用するです。 )。help :g
そしてを見てくださいhelp :j
。これを組み合わせれば得られます。
:%g/^\w/j!
答え3
以下を使用して簡単に実行できますpaste
。
paste -sd'\0\n' file
存在するvim
:
:%!paste -sd'\0\n' -