web-dev-qa-db-ja.com

ファイルの各行の先頭と末尾に文字を追加する

各行の最初と最後にいくつかの文字を追加する最良の方法は何ですか? Vimや他の方法を使用して実行できますか?

42
Myth

Vimでは、次のことができます

:%s/^\(.*\)$/"\1"/
  • s/regex/replace/は、検索と置換のためのvimコマンドです。
  • %はファイル全体に適用します
  • ^および$はそれぞれ行の開始と終了を示します。
  • (.*)はその間のすべてをキャプチャします。 (および)は、vim正規表現でエスケープする必要があります。
  • \1は、キャプチャしたコンテンツを2つの引用符で囲みます。
71
Amarghosh

よりシンプル:

%s/.*/"&"

説明:デフォルトでは、パターンは可能な限り最大の一致として解釈されるため、.*は行全体として解釈され、^および$は不要です。また、\(...\)はパターンの一部を選択するのに役立ちますが、パターン全体では必要ありません。置換で&で表されます。そして、検索または置換の最後の/は、他に何かがない限り必要ありません。それを省くことは怠惰と見なすことができます。 (もしそうなら、私は怠惰です。)

53
George Bergman

%sを示唆する2つの回答は完璧です。%sを愛し、頻繁に使用することを学んでいただけると思います。しかし、他のテキストブロックを頻繁に囲む必要がある場合は、 surround.vim プラグインを確認する必要があります。 :yss"そして、manyには他にも便利な組み込みのサラウンドターゲットがあります。たとえば、現在のWordを二重引用符で囲む場合:csw"、周囲の単一引用符を二重引用符で変更する場合:cs'"

surround.vim は私のお気に入りのvimプラグインの1つで、毎日使用しています。

3

より良いutilはsedされます(特にそれをスクリプト化する必要がある場合)

cat foo.txt | sed s/^\(.*\)$/"\1"/g
2
Mainguy