重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

シェルスクリプトについて質問です。
/etc/ssh/sshd_configのAllowUsers行にユーザを追加&削除、sshdをリスタートするスクリプトを作っています。

ユーザ追加の処理はsedコマンドで実現できました。
sed -i -e "s/^AllowUsers/AllowUsers $USERNAME/" $CONF_FILE

そして、悩んでいるのがユーザ削除時の処理です。
"AllowUsersで始まる行の中で" 且つ "変数$USERNAME" に一致する部分を削除するという処理です。sedは複数条件を指定することもできますが、以下記述の場合、2つの条件が独立して処理されてしまいます。
sed -e "s/^AllowUsers/AllowUsers/" -e "s/ $USERNAME//" $CONF_FILE
($USERNAMEに一致する部分はAllowUsersで始まらない行でも置換される)

sedにAND条件のような使い方は可能でしょうか。
環境はCentOS 5.3、シェルはbashを使っています。

よろしくお願いいたします。

A 回答 (2件)

sed -e "/^AllowUsers/s/ $USERNAME//" $CONF_FILE


じゃダメなん?
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
sedの使い方を理解しておらず何となくでしか分かっていませんが、目的とする動作が実現できました。時間を割いて回答いただきありがとうございました。これからも勉強します。

お礼日時:2013/05/09 19:34

アドレス指定すればいいだけだったりしますか?

    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
アドレス指定とは何だろうと調べたところ、ANo.2のchie65535さんが回答しているような書き方のことだと分かり、まさに仰る通りアドレス指定での置換です。初歩的なことだったのかもしれませんがとても助かりました。本当にありがとうございます。

お礼日時:2013/05/09 19:25

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