アプリ版:「スタンプのみでお礼する」機能のリリースについて

viエディタで、
:%s/???/???/g とかで、行を繋げることはできないでしょうか。
行の最後がある特定の文字列がきた場合には、
(もしくは全ての行の)
行と行をつなげる(改行をなくす)という意味です。
viで「Shift+J」で1行単位でできるのは知ってるのですが
一括置換したいです。

もし、viでなくても他のテキストエディタ等で方法があれば
教えてください。

A 回答 (5件)

viということは、Unix/Linuxベースの話でしょうか。


それならば、単に全ての改行をなくすのであれば、エディタの置換機能を使わなくても、

awk '{printf($0)}' aaa.txt > bbb.txt

などの方法でできると思います。

「行の最後がある特定の文字列がきた場合」というのは具体的にどういうことでしょう。特定の文字列が来たときは改行を削除して行をつなげ、文字列がないときはそのまま改行する、ということでしょうか?

たとえば行の最後がxxxで終わっている場合だけ改行を削除するのであれば、

awk '{if ($0 ~ /xxx$/) {printf($0)} else {print}}' aaa.txt > bbb.txt

という方法でできると思います。
    • good
    • 0
この回答へのお礼

ありがとうございます!!!
できました!awkでできてしまうんですね。

お礼日時:2006/12/26 16:15

もう解決したのかな・・・


正規表現が使えるテキストエディタでの改行が何になるかはそのエディタによってまちまち。
それはヘルプを見ると書いてあるよ。
でも大抵は「\n」
物によっては「\r」
ちょっと癖のあるものだとCRとLFが別になっていて「\r\n」としなければならない場合も。
    • good
    • 0
この回答へのお礼

ありがとうございます。解決しました。

お礼日時:2007/01/04 20:53

#3です。

すみません。訂正です。
×コマンドモードの状態から「1,$g/LAST$/j」
○コマンドモードの状態から「:1,$g/LAST$/j」
    • good
    • 0

g(グローバル)コマンドを使います。


例えば、「LAST」で終わる行を連結する場合、
コマンドモードの状態から「1,$g/LAST$/j」
とタイプします。
ちなみに上の例の場合「1,$」で全ての行が対象になるので、
行範囲を指定したい場合は、代わりに「200,300」等とします。

あと、これは蛇足かもしれませんが、
ただ単にたくさんの行を連結したいが、
「J」をたくさんタイプするのが面倒だという意味なら、
「30J」(30行連結)とします。
    • good
    • 0
この回答へのお礼

情報ありがとうございます。
というか30Jなんてできるんですね。知らなかった…

お礼日時:2007/01/04 20:52

OSが良くわからないけど?


「正規表現」が使えるフリーのテキストエディタでなら大抵できるよ。

viでは・・・置き換え使わないから判らない・・・ごめん

http://www.vector.co.jp/vpack/filearea/win/writi …
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
OSは、WindowsかUNIXのどちらかです。
今正規表現が使えるテキストエディタをインストールしてはみたのですが、
「改行」の正規表現がわかりません。。。
教えていただけますか?

お礼日時:2006/12/26 15:44

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!