2013-01-08 41 views
0

這裏(DOT)盈是我用其中存在匹配以匹配變量的字符串,並刪除該行:匹配一個字符串,如果它有一個則跳過。結果

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 
+0

這裏是我做了什麼: 'sed的-in '/\.'"$domainAndSuffix"'/p' 的/ etc/nagios的/ nagios.cfg'

文件內容:

_cfg_file =的/ etc/nagios的/對象/ HTTP_URL/chat.jbodyperformance.com.cfg_
_cfg_file =的/ etc/nagios的/對象/ HTTP_URL/jbodyperformance.com.cfg_

輸出:

_cfg_file =的/ etc/nagios的/對象/ HTTP_URL/chat.jbodyperformance.com.cfg_
_cfg_file = /等/ nagios的/對象/ HTTP_URL/chat.jbodyperformance.com.cfg_
_cfg_file =的/ etc/nagios的/對象/ HTTP_URL/jbodyperformance.com.cfg_


有趣的結果... – Afrojoe

+0

如果這是一個評論我的答案? '-i'應該是最後一個選項,在你的情況下'n'可以被解釋爲後綴。嘗試'-ni'而不是'-in'。 –

+0

對不起,是的,這應該是對你的評論的評論!再試一次。 :) – Afrojoe

回答

0

如果上述子是固定的,你可以嘗試以下方法:

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

如果它不是固定的,那麼使用negative lookbehind會很好,但是sed不能這樣做。您可以使用ssedGNU grep

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

grep -vP '(?<!\.)'"$DOMAIN" > file1; mv file1 file 
+0

別忘了'-i'。 – Beta

+0

@貝塔是的。最好忘記它,而不是過早地申請:) –

+0

我會暫時地給它一個鏡頭 – Afrojoe

相關問題