簡體   English   中英

如何在一個配置文件中查找文本字符串,並使用一個命令行命令在下面添加兩個新行?

[英]How to find a text string within a config file and add two new lines below with one single line command?

我正在努力解決Poodle SSL Bug和很多配置文件必須由我更改的問題。

我嘗試保存一些工作,並通過單行命令來完成。 因此,我需要修改-例如-/etc/lighttpd/lighttpd.conf。

我正在尋找ssl.engine =“啟用”

我想在找到字符串的下方添加兩行:

ssl.use-sslv2          = "disable"
ssl.use-sslv3          = "disable"

最終結果應為:

$SERVER["socket"] == "0.0.0.0:80" {   
ssl.engine = "enable"   
ssl.use-sslv2          = "disable"         
ssl.use-sslv3          = "disable"   
ssl.pemfile = "/etc/ssl/cert.pem"   
ssl.ca-file = "/etc/ssl/cert.bundle"   
}  

我嘗試過AWK,但由於空間和回車而無法使它正常工作。

很高興看到一些班輪:)

這是我嘗試過的(肯定在這里做錯了):

awk '{a[NR]=$0}/ssl.engine/{a[NR+1]=a[NR+1]"ssl.use-sslv2 = "disable""}{a[NR+2]"ssl.use-sslv3 = "disable""}END{for(i=1;i<=NR;i++)print a[i]}' /etc/lighttpd/lighttpd.conf

只需打印每一行,如果一行包含正則表達式,則打印您想要的任何內容:

awk '{print} /ssl\.engine = "enable"/{ print "ssl.use-sslv2 = \"disable\"\nssl.use-sslv3 = \"disable\"" }' file

注意 '。' 是RE元字符,因此需要在RE上下文中進行轉義。

如果要修改原始文件,請使用GNU awk:

awk -i inplace '...' file

以及任何awk或任何其他UNIX工具:

awk '...' file > tmp && mv tmp file

明確:

awk -i inplace '{print} /ssl\.engine = "enable"/{ print "ssl.use-sslv2 = \"disable\"\nssl.use-sslv3 = \"disable\"" }' file

awk '{print} /ssl\.engine = "enable"/{ print "ssl.use-sslv2 = \"disable\"\nssl.use-sslv3 = \"disable\"" }' file > tmp && mv tmp file

sed怎么樣?

sed 's/ssl.engine = "enable"/ssl.engine = "enable"\nssl.use-sslv2 = "disable"\nssl.use-sslv3 = "disable"/' config

使用sed -i替換就地:

sed -i 's/ssl.engine = "enable"/ssl.engine = "enable"\nssl.use-sslv2 = "disable"\nssl.use-sslv3 = "disable"/' config

暫無
暫無

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

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