2013-03-01 68 views
0

好了,所以我問了如何在昨晚的另一個文件的行尾添加一個變量的問題,並得到了很好的答案,謝謝你的順便! 現在我想做相反的事情。
我寫了一個bash腳本,基本上解除了我對第一個做的事情。作爲其中的一部分,我有相同的變量,現在我想從另一個文件中刪除它,這次它可能在該文件中的任何地方,我只想刪除它,而不更改文件或打破它所在的行。確定從哪裏開始,但是。說我有寫一個bash腳本,刪除另一個文件中的變量

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

現在我需要一個命令,從文件list-of-ips刪除$inside_ip這是IP地址的像

1.1.1.1 2.2.2.2 3.3.3.3 ... 
+2

'sed'來拯救,如果你提供了一些例子之前和之後的例子......'sed -i'執行內聯變更,即將更改存儲在受影響的文件中,那麼將會很容易給出一個很好的答案。 – 2013-03-01 20:28:05

+0

對不起,我正在收集一些變量,並與他們一起做其他事情。在另一個腳本中,我正在這樣做將inside_ip的值添加到文件sed -i.bck'$ s/$ /'「$ inside_ip:80 /」list-of-prod-ips現在我想要刪除一個值那是放在那裏。現在的區別是,我試圖刪除的IP可能在文件中的任何位置。它可能是第一個IP或第25個IP。該文件只是一行中沒有任何回報的IP列表。所以,如果你vi的文件是一行。 – user2121806 2013-03-01 21:01:34

回答

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命令的引用,"允許shell執行參數擴展,如果你ins tead使用單引號',sed會尋找字符串$ip,而你不希望這樣。

使用sed -i進行更改在線

0

正如弗雷德裏克提到的,使用sed的工作,但我會用下面的,因爲你的成績都在一行...

假設文件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變量中放置反斜槓,以避免它需要。

+0

非常感謝你們!這很好。喬 – user2121806 2013-03-04 20:01:46

相關問題