编写一个删除另一个文件中的变量的bash脚本

时间:2013-03-01 20:15:18

标签: linux bash

好的,所以我问了一个问题,如何将一个变量添加到昨晚另一个文件的行尾,并得到了很好的答案,顺便说一句,谢谢! 现在我想做相反的事 我正在写一个bash脚本,基本上撤消了我对第一个做的事情。作为其中的一部分,我有相同的变量,现在我想从另一个文件中删除它,这次它可能在该文件中的任何地方,我只是想删除它而不更改文件或打破它所在的行。甚至没有确定从哪里开始,但是。说我有

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

现在我需要一个从文件$inside_ip中删除list-of-ips的命令,这是一行IP,如

1.1.1.1 2.2.2.2 3.3.3.3 ...

2 个答案:

答案 0 :(得分: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执行参数扩展,如果你改为使用单引号',sed会查找文字字符串$ip并且您不希望这样。

使用sed -i进行内联更改

答案 1 :(得分:0)

正如fredrik所说,使用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变量中放置反斜杠,以避免在需要时使用它。