牛、豚、鶏、どれか一つ食べられなくなるとしたら?

UNIXのviコマンドについてなのですが、
指定文字以降を置換する方法を考えているのですが、わかりません。sedを使うと思うのですが、わかる方いましたら教えていただきたいです。

A 回答 (4件)

この回答への補足

ありがとうございます。

さっそく見てみたのですが、
指定文字以降の文字を全て置き換えることはできるんですか?

たとえば「C」以降の文字を全て「@」に変える。

などです。

補足日時:2007/06/12 13:39
    • good
    • 0

各行の行末までをすべて置換したいなら、次のように入力すれば出来ます。



 :%s/C.*$/@/

他の方の書かれた参考URLにある「置換コマンド」の説明の一番下の欄の方法です。決まった文字列だけでなく正規表現が指定できるので、上の例では正規表現を使っています。

正規表現について書かれたページを探してみたら、こんなサイトがありました。ご参考にどうぞ。

■サルにもわかる正規表現入門
http://www.mnet.ne.jp/~nakama/

この回答への補足

ありがとうございます!!
やってみましたが、結構求めているものに近づいたのですが、「@」の置換も行末まで置換ができません・・・

例えば、文字が8行8列あるとして、「@」の数が8行目まで出力しずに、「C」のある部分で終わってしまうので、行末まで「@」が出力される方法はあるのでしょうか?

何度も申し訳ないのですが、教えていただけたらうれしいです。

補足日時:2007/06/12 14:27
    • good
    • 0

ANo.2の補足が日本語として意味を成していません。



何を聴きたいのか明確にしてください。

この回答への補足

申し訳ございません。
例をあげた方がわかりやすいと思うのであげます。

置換前
ASDCDFGH
AXCDFEFG
DFCVBFGH

置換後
ASD@@@@@
AX@@@@@@
DF@@@@@@

みたいな感じに、1回のコマンドでできるのでしょうか?
前回わかりにくくてすいませんでした。

補足日時:2007/06/13 09:37
    • good
    • 0

viとsedとは別のモノなのですが,そもそもそれは理解しておられますか?



sedだと,難問ですが,C以降の各文字を@に変えるなら,たとえばこう.
sed '
h
s/^[^C]*//
s/./@/g
x
s/C.*//
G
s/\n//
' 

この回答への補足

コマンドを何度か入力してすることはできるんですが、1回のコマンド入力での方法があるのかなと思いまして・・・

適切な回答ありがとうございました!!

補足日時:2007/06/13 13:01
    • good
    • 0

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