- ベストアンサー
UNIXコマンド
UNIXのviコマンドについてなのですが、 指定文字以降を置換する方法を考えているのですが、わかりません。sedを使うと思うのですが、わかる方いましたら教えていただきたいです。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
その他の回答 (3)
- a-saitoh
- ベストアンサー率30% (524/1722)
viとsedとは別のモノなのですが,そもそもそれは理解しておられますか? sedだと,難問ですが,C以降の各文字を@に変えるなら,たとえばこう. sed ' h s/^[^C]*// s/./@/g x s/C.*// G s/\n// '
補足
コマンドを何度か入力してすることはできるんですが、1回のコマンド入力での方法があるのかなと思いまして・・・ 適切な回答ありがとうございました!!
- a-saitoh
- ベストアンサー率30% (524/1722)
ANo.2の補足が日本語として意味を成していません。 何を聴きたいのか明確にしてください。
補足
申し訳ございません。 例をあげた方がわかりやすいと思うのであげます。 置換前 ASDCDFGH AXCDFEFG DFCVBFGH 置換後 ASD@@@@@ AX@@@@@@ DF@@@@@@ みたいな感じに、1回のコマンドでできるのでしょうか? 前回わかりにくくてすいませんでした。
- Rayderl
- ベストアンサー率83% (40/48)
各行の行末までをすべて置換したいなら、次のように入力すれば出来ます。 :%s/C.*$/@/ 他の方の書かれた参考URLにある「置換コマンド」の説明の一番下の欄の方法です。決まった文字列だけでなく正規表現が指定できるので、上の例では正規表現を使っています。 正規表現について書かれたページを探してみたら、こんなサイトがありました。ご参考にどうぞ。 ■サルにもわかる正規表現入門 http://www.mnet.ne.jp/~nakama/
補足
ありがとうございます!! やってみましたが、結構求めているものに近づいたのですが、「@」の置換も行末まで置換ができません・・・ 例えば、文字が8行8列あるとして、「@」の数が8行目まで出力しずに、「C」のある部分で終わってしまうので、行末まで「@」が出力される方法はあるのでしょうか? 何度も申し訳ないのですが、教えていただけたらうれしいです。
補足
ありがとうございます。 さっそく見てみたのですが、 指定文字以降の文字を全て置き換えることはできるんですか? たとえば「C」以降の文字を全て「@」に変える。 などです。