• ベストアンサー

UNIXコマンド

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

質問者が選んだベストアンサー

  • ベストアンサー
noname#39970
noname#39970
回答No.1
mangorou
質問者

補足

ありがとうございます。 さっそく見てみたのですが、 指定文字以降の文字を全て置き換えることはできるんですか? たとえば「C」以降の文字を全て「@」に変える。 などです。

その他の回答 (3)

  • a-saitoh
  • ベストアンサー率30% (524/1722)
回答No.4

viとsedとは別のモノなのですが,そもそもそれは理解しておられますか? sedだと,難問ですが,C以降の各文字を@に変えるなら,たとえばこう. sed ' h s/^[^C]*// s/./@/g x s/C.*// G s/\n// ' 

mangorou
質問者

補足

コマンドを何度か入力してすることはできるんですが、1回のコマンド入力での方法があるのかなと思いまして・・・ 適切な回答ありがとうございました!!

  • a-saitoh
  • ベストアンサー率30% (524/1722)
回答No.3

ANo.2の補足が日本語として意味を成していません。 何を聴きたいのか明確にしてください。

mangorou
質問者

補足

申し訳ございません。 例をあげた方がわかりやすいと思うのであげます。 置換前 ASDCDFGH AXCDFEFG DFCVBFGH 置換後 ASD@@@@@ AX@@@@@@ DF@@@@@@ みたいな感じに、1回のコマンドでできるのでしょうか? 前回わかりにくくてすいませんでした。

  • Rayderl
  • ベストアンサー率83% (40/48)
回答No.2

各行の行末までをすべて置換したいなら、次のように入力すれば出来ます。  :%s/C.*$/@/ 他の方の書かれた参考URLにある「置換コマンド」の説明の一番下の欄の方法です。決まった文字列だけでなく正規表現が指定できるので、上の例では正規表現を使っています。 正規表現について書かれたページを探してみたら、こんなサイトがありました。ご参考にどうぞ。 ■サルにもわかる正規表現入門 http://www.mnet.ne.jp/~nakama/

mangorou
質問者

補足

ありがとうございます!! やってみましたが、結構求めているものに近づいたのですが、「@」の置換も行末まで置換ができません・・・ 例えば、文字が8行8列あるとして、「@」の数が8行目まで出力しずに、「C」のある部分で終わってしまうので、行末まで「@」が出力される方法はあるのでしょうか? 何度も申し訳ないのですが、教えていただけたらうれしいです。

関連するQ&A