2016-04-10 86 views
0

我有一個包含數千行和列的文件,其中兩列是IP1和IP2。 IP1始終相同192.168.100.1如何用同一文件中另一列的值替換一列中的值

* example.com,192.168.100.1,10.10.1.1,5effd70e9d99b1acf,10,63,58,42,0,21,84055280,0 example2.com,192.168。 100.1,10.10.1.50,,255b2l429c8f23ee,10,63,37,42,1,21,1451066297,0 example3.com,192.168.100.1,10.10.1.58,589b7a5f8677b,11,68,37,42,1, 20,1451066297,0

............. *

我想與IP2的值來代替IP1的值,並刪除IP2的值。

我嘗試這樣做:

sed -i 's/192\.168\.100\.1/$(grep 192\.168\.100\.1 file | awk -F',' '{print $2}')/' file 

出現下列錯誤: 的sed:-e表達式#1,焦炭68:未結束的'S'命令

請幫助。

+1

請查看[editing-help](http://stackoverflow.com/editing-help)。 – Cyrus

+0

您應該閱讀Chris Johnson撰寫的Shell腳本食譜,瞭解sed,grep,awk和一般shell腳本的基礎知識,然後閱讀Arnold Robbins編寫的Effective Awk Programming第4版,如果您要在其中執行任何其他文本操作UNIX將來。 –

回答

0

awk來拯救!消除硒,這應該做的...

awk -F, -v OFS=, '{$2=$3;$3=""}1' file 
0

sed救援!消除AWK,這應該做的......

sed -i 's/192\.168\.100\.1,//' file 

sed命令查找字符串「192.168.100.1」,並沒有取代它。

.在sed命令中有特殊含義,所以它需要反斜槓。有關手冊頁的更多信息。

+0

儘管此代碼可能會回答問題,但提供 有關_why_和/或_how_的附加上下文,它將回答 該問題將顯着提高其長期值 的值。請[編輯]你的答案,添加一些解釋。 –

相關問題