0

好的,所以我昨晚问了如何将变量添加到另一个文件的行尾的问题,并得到了很好的答案,顺便谢谢你!现在我想做相反的事情。
我正在编写一个 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 ...
4

2 回答 2

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进行内联更改

于 2013-03-01T21:15:14.070 回答
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 变量中放置反斜杠以避免它。

于 2013-03-01T23:01:26.393 回答