2016-04-10 85 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_的附加上下文,它将回答 该问题将显着提高其长期值 的值。请[编辑]你的答案,添加一些解释。 –

相关问题