簡體   English   中英

在bash或python中寫入特定行

[英]Write to specific line in bash or python

我正在嘗試使我更容易地使我的網址縮短器減少垃圾郵件。 當我不得不通過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答案

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

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

假設您要插入最后一行之前,此方法有效。 第二次閱讀您的問題后,我注意到您寫了“ <其他指令在這里...>”。 盡管這是一個隱藏的提示,但我假設您想在第一部分中向以下內容插入一行:

<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

這是sh / ksh / bash中的另一種方式: http : //stromberg.dnsalias.org/~strombrg/contextual

使用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覆蓋原始文件,保存備份。

當然,此解決方案假設您知道要添加新內容的文件末尾有幾行。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM