在IP之后的特定行上的sed +文本

时间:2010-10-25 19:41:45

标签: sed line

我的proftpd日志中有以下行(准确地说是第78行)

Deny from 1.2.3.4

我还有一个脚本,可以通过我的日志浏览使用暴力攻击的人,然后存储他们的IP(准备黑名单)。我正在努力的是在特定行的末尾插入(用sed推测) - 这是我到目前为止所得到的:

sed "77i3.4.5.6" /opt/etc/proftpd.conf >> /opt/etc/proftpd.conf

现在人们会认为这样可以完美地运作,但它实际上会做到以下几点(第77到78行):

3.4.5.6
Deny from 1.2.3.4

我怀疑这是由于我的日期版本的sed,有没有其他方法可以实现相同的功能?还有>>导致配置在fole的末尾被复制(再次,我确定这是我的sed版本的限制)。这是在我的nas上运行自制Linux内核。以下Sed选项:

  

root @ NAS:〜#sed BusyBox v1.7.0   (2009-04-29 19:12:57 JST)多方通话   二进制

     

用法:sed [-efinr] pattern [files ...]

     

选项:           -e script将脚本添加到要执行的命令中           -f scriptfile将脚本文件内容添加到                           要执行的命令           -i就地编辑文件           -n禁止自动打印图案空间           -r使用扩展正则表达式语法

     

如果没有给出-e或-f,则为第一个   非选项参数被视为   sed脚本来解释。所有剩下的   参数是输入文件的名称;如果   没有指定输入文件,那么   读取标准输入。源文件   除非-i选项,否则不会被修改   给出了。

为你们提供帮助。

1 个答案:

答案 0 :(得分:2)

这与sed的版本无关;这只是简单的“做错了”。

sed -i '77s/$/,3.4.5.6/' /opt/etc/proftpd.conf