写入Bash或Python中的特定行



我试图使我更容易保持我的URL Shortener减少垃圾。当我必须经过SSH并继续向我的.htaccess添加另一行时,它变得非常乏味和烦人。因此,我想知道是否有一种方法可以轻松添加文本行,并且可以放入脚本

示例:

<Directives here>
Order Deny,Allow
Deny from 255.255.255.255
Deny from 0.0.0.0
Deny from 1.2.3.4
<Other Directives here as well as ending Directive>

现在,我想为此添加127.0.0.1和192.168.0.1的咯咯笑声,但是由于我无法直接回应我想要的地方,所以我该如何处理。Bash或Python答案接受

使用headechotail的组合,您可以在原始文件上创建一个带有所需行的临时文件,然后可以使用mvcp

Deny from 127.0.0.1添加到您的示例.htaccess:

(head -n -1 .htaccess
 echo 'Deny from 127.0.0.1'
 tail -n 1 .htaccess) > .htaccess.tmp
mv -b .htaccess.tmp .htaccess
# cat .htaccess
<Directives here>
Order Deny,Allow
Deny from 255.255.255.255
Deny from 0.0.0.0
Deny from 1.2.3.4
Deny from 127.0.0.1
<Other Directives here as well as ending Directive>

head -n -1:获取除最后一行以外的所有原始行, echo新行, tail -n 1:获取最后的原始行。() >将所有内容都写入临时文件。 mv -b覆盖原件,保存备份。

此解决方案当然假设您知道要添加新内容的文件末尾有多少行。

这是另一种方式,在sh/ksh/bash中:http://stromberg.dnsalias.org/~strombrg/contextual

sed可能是最容易使用的,几乎在任何地方可用。以下将在最后一条之前插入一行:

sed -e '$i Deny from 192.168.0.1' .htaccess

这项工作假设您想在最后一行之前插入。第二次阅读了您的问题后,我注意到您写了"&lt;其他指令在这里...&gt;"。尽管这是一个隐藏的提示,但我想您想将一行插入第一部分中的内容:

<Directive_1>
Order Deny,Allow
Deny from 255.255.255.255
Deny from 0.0.0.0
Deny from 1.2.3.4
</Directive_1>
...
<Directive_n>
...
</Directive_n>

以下SED命令将在第一部分的关闭标签之前插入一条线:

sed -e '/^</Directive_1>$/i Deny from 192.168.0.1' .htaccess

相关内容

  • 没有找到相关文章

最新更新