grep を使用してパターンを探し、sed[duplicate] に置き換えます。

grep を使用してパターンを探し、sed[duplicate] に置き換えます。

次のコード行があります

        BalancerMember http://server3:82 status=D
        BalancerMember http://server2:80 status=D

ポート82のエントリを検索して削除したいですstatus=D

        BalancerMember http://server3:82

これを試しましたがうまくいきません

  grep :82 app.conf | sed -i 's/status=D/ /'
  sed: no input files

ファイルを変更したいので、-iオプションが必要です。sed

どんな提案でも。

答え1

完全なsedソリューションをテストできます。

sed -i '/:82 /s/status=D//' file

どこ

  • /:82 /82の行を選択してください。
  • s/status=D/状態を次に置き換える
  • //何もありません。

答え2

サンプルデータによると、これはうまくいきます

awk '/:82 /{print $1,$2; next} {print}' inputfile

出力を別のファイルにリダイレクトできます。

awk '/:82 /{print $1,$2; next} {print}' inputfile >> newfile

一般的に言えば、私が役立つなら、元のデータを変更したくありません。

答え3

与えられた入力に基づいて

awk '$2~/:82$/{$NF=""}1' input.txt > output.txt

関連情報