0

変数内の文字列を照合し、一致する行を削除するために使用するものは次のとおりです。

sed -i '/'"$domainAndSuffix.cfg"'/d' /etc/file

変数内の文字列を一致させる方法を知りたいのですが、ファイル内の一致に。が含まれている場合。すぐ左に隣接している場合、この行は削除されず、。がない一致が見つかるまでファイルを調べ続けます。

サンプルファイルの内容:

happy.domain.com
pappy.domain.com
domain.com

一致する文字列:
domain.com

必要なファイル出力:

happy.domain.com
pappy.domain.com

*編集:実際のファイルの内容:

cfg_file=/etc/nagios/objects/http_url/bob.ca.cfg
cfg_file=/etc/nagios/objects/http_url/therecord.com.cfg
cfg_file=/etc/nagios/objects/http_url/events.therecord.com.cfg
cfg_file=/etc/nagios/objects/http_url/read.therecord.com.cfg
cfg_file=/etc/nagios/objects/http_url/wheels.ca.cfg
cfg_file=/etc/nagios/objects/http_url/used-vehicle-search.autos.ca.msn.com.cfg
cfg_file=/etc/nagios/objects/http_url/womensweekendshow.com.cfg
cfg_file=/etc/nagios/objects/http_url/yorkregion.com.cfg
cfg_file=/etc/nagios/objects/http_url/yourclassifieds.ca.cfg
4

1 に答える 1

0

前の部分文字列が修正されている場合は、次のことを試すことができます。

PREFIX='cfg_file=\/etc\/nagios\/objects\/http_url\/'
DOMAIN='therecord.com'
sed -i "/^${PREFIX}${DOMAIN}/d" file

修正されていない場合は、否定的な後読みを使用するとよいでしょうが、それはsedできません。ssedまたはを使用できますGNU grep

ssed -Ri '/(?<!\.)'"$DOMAIN"'.cfg/d' file

また

grep -vP '(?<!\.)'"$DOMAIN" > file1; mv file1 file
于 2013-01-08T18:52:39.850 に答える