0

さて、昨夜、別のファイルの行末に変数を追加する方法について質問したところ、すばらしい回答が得られました。ありがとうございます。今、私は逆をやりたいです。
私は基本的に最初に行ったことを元に戻すbashスクリプトを書いています。その一環として、同じ変数があり、別のファイルから削除したいのですが、今回はそのファイルのどこにあってもかまいません。ファイルを変更したり、ファイルの行を壊したりせずに削除したいだけです。これからどこから始めればよいかは確かですが。私が持っていると言う

echo -e "Enter inside IP address to be Removed: \c"
read inside_ip

今私は次のようなIPの単一行である$inside_ipファイルから削除するコマンドが必要ですlist-of-ips

1.1.1.1 2.2.2.2 3.3.3.3 ...
4

2 に答える 2

0

少し不明確ですが、これで始めることができます。

$ cat input
1.1.1
2.2.2
3.3.3
4.4.4
5.5.5

$ ip='3.3.3'

$ sed "/$ip/d" input
1.1.1
2.2.2
4.4.4
5.5.5

"上記のsedコマンドの引用符に注意してください"。シェルがパラメーター展開を実行できるようにします。代わりに一重引用符を使用した場合'、sedはリテラル文字列$ipを検索しますが、これは望ましくありません。

sed -iインラインで変更を行うために使用します

于 2013-03-01T21:15:14.070 に答える
0

fredrikが述べたように、sedの使用は機能しますが、結果はすべて1行にあるため、次を使用します...

ファイルfoo.txtに次のものが含まれているとします。

1.1.1.1 2.2.2.2 3.3.3.3 4.4.4.4

次を使用して、IPを削除できます。

ip="3.3.3.3"
sed -i 's/\b'$ip'\b//g' foo.txt

結果は次のようになります。

1.1.1.1 2.2.2.2  4.4.4.4

これにより、一致が行内でグローバルに削除されます (複数の一致がある場合)。また、IP アドレスのドットは、正規表現の任意の文字が一致することを意味するため、予期しない一致が発生する可能性がわずかにあることに注意してください。必要に応じて、バックスラッシュを避けるために ip 変数にバックスラッシュを入れることができます。

于 2013-03-01T23:01:26.393 に答える