WEB相談室

Webページ作成に関しての何でも掲示板です。

タイトル:viでLFを置換

0:[投稿] JTR [2002/09/30 15:54 ][環境:WIN+IE UNIX系+Perl]

viで、LFを他の文字へ置換する方法を教えてください。

ちょと、WEB関係でないけど...、よろしくお願いいたします。

(すでにvi以外でもう出来ていますが、viでどうしても出来なくて質問しました。)


1:[回答] popo [2002/09/30 16:28 ]

環境が無いのでテストできないのですが、
http://www.tokaido.co.jp/syoko/viman/frame.html
を参考にしてみてください。

ちがったらごめんなさい。(^^;



2:[回答] JTR [2002/09/30 18:07 ]

popoさん、いつもありがとうございます。

このページには、今回のは、ないみたいです。
しかし、良いページを紹介していただいて、ありがとうございました。


3:[回答] ... [2002/10/01 00:52 ]

置き換えでできませんか?

:%s/^J/置き換え文字列/g
もしくは
:1,$s/^J/置き換え文字列/g
^Jは、CTL+V → CLT+J で入力

ちなみにLFって0x0Aですよね?


4:[回答] あまぎ [2002/10/01 08:05 ]

参考まで。
http://www.openoffice.de/linux/buch/vi.html
因みに、Steuerung = controlです。


5:[回答] JTR [2002/10/01 09:24 ]

>>3
>:1,$s/^J/置き換え文字列/g
>^Jは、CTL+V → CLT+J で入力
が出来なくて、質問しました。

>>4
難しい英単語ばかりで...。よくわからなかったです。


6:[回答] B-Cus [2002/10/01 09:38 ]

> 置き換えでできませんか?

できます?

vi (Solaris), nvi (FreeBSD, Linux), vim いずれも ^J は入力の
終わり (改行と同じ) として扱われ、置換対象としては指定でき
ませんでした。


7:[回答] ... [2002/10/01 11:13 ]

>^J は入力の終わり (改行と同じ) として扱われ

失礼しました。確かにそうですね。
^Jを入力するのには16進入力の CTLR+X → 0a で入力できると思います。


8:[回答] JTR [2002/10/02 10:53 ]

>>7
>^Jを入力するのには16進入力の CTLR+X → 0a で入力できると思います。

うまくいきませんでした。



9:[回答] ... [2002/10/02 19:11 ]

>うまくいきませんでした。
何がうまく行かないのか書かれてないのでアレですが。

もしかして行そのものの LF を削除して元々複数行なデータを単一行にしようとしていませんか?
上記の指定で行内の LF の削除は出来ますが、上記の処理をさせる方法なら判りません。
(LF がエディターの内部コードとして扱われているなら操作出来ないと思いますが)

もしそうなら
http://pc.2ch.net/test/read.cgi/unix/1020611467/l50
あたりで聞いてみてください。


10:[回答] B-Cus [2002/10/02 19:40 ]

> もしかして行そのものの LF を削除して元々複数行なデータを単一行にしよう

ということだと僕は解釈していました。


> 上記の指定で行内の LF の削除は出来ますが

これってどういう状況ですか?

行内の LF って?


11:[回答] JTR [2002/10/02 22:28 ]

> もしかして行そのものの LF を削除して元々複数行なデータを単一行にしよう

そうです!

実は、特定の文字列がある<em>行</em>を削除したいのです。



12:[関連] あまぎ [2002/10/02 22:55 ]

>>11
この時点で全然関係なくなってしまいましたが、vimでは、こんな方法もあります。
:set ff=mac
(ここでファイルをopen)
:1,$s/^J//g (^Jはctrl+v ctrl+j)

>>5
ドイツ語です。


13:[回答] ... [2002/10/02 23:16 ]

>行内の LF って?
入力モード時に CTLR+X → CTLR+Jを入力すると
^J
と表示されます。
この時は vi が改行としてではなくデータとして ^J(LF)が表示されるので、
これの置き換えは可能です。

で、

画面上にLFが展開された状態、つまり「LF がエディターの内部コードとして
扱われているなら操作出来ない」ならという事で、

vi -c '%s/^J//g|q!' file
辺りも試してみましたが、うまく行きませんでした。

う〜ん申し訳ないけどパス。

vim ならあまぎさんの方法で出来そうですね。


14:[回答] Mr.X [2002/10/03 01:27 ]

> 実は、特定の文字列がある<em>行</em>を削除したいのです。

特定文字列のある行を連結するための ex コマンドというと……

ある単語 foo がある行と次の行の2行を連結 (最初に見つかった一つ):
/foo/j
同じく3行連結:
/foo/j2
ある単語 foo がある行と次の行の2行を連結 (全て):
g/foo/j
<em> のある行から foo のある行までを連結:
/<em>/,/foo/j

なお、分かち書きのアルファベット文化圏発祥なので、
行連結時には間に空白が入ります。
jvim だと日本語の場合は行連結時に空白を入れないオプションがあるらしいです。


15:[回答] JTR [2002/10/03 09:05 ]

>>12

vimって入力したらviのような感じで起動しました。
で、:set ff=macは、Unknown optionで、
ctrl+v ctrl+jと入力すると ^J でなく ^@ が表示されました。

回答(必須): 状態:

お名前(必須):

e-mail:

URL:




[戻る]

ChaichanPAPA's World