好的,所以我问了一个问题,如何将一个变量添加到昨晚另一个文件的行尾,并得到了很好的答案,顺便说一句,谢谢! 现在我想做相反的事 我正在写一个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 ...
答案 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变量中放置反斜杠,以避免在需要时使用它。