Bash、grepを使用して文字列を含む行を削除する

Bash、grepを使用して文字列を含む行を削除する

現在、関連ファイルの全内容が削除されています。

#!/bin/bash
rpc_port="9201";
dir="/etc/apache2/ports.conf"
cat $dir | grep -v "Listen $rpc_port" > $dir

文書の内容:

Listen 9200
Listen 9201
Listen 9202
Listen 9203
Listen 9204

誰かがこの問題を解決したり、私に効果的な選択肢を提供したりできますか?

答え1

読み込んでいるのと同じファイルに書き込み(=リダイレクト)を行うことはできません。別のファイルにリダイレクトするか、sed を使用します。

sed -i "/$rpc_port/d" $dir

関連情報