[英]Linux command to find a specific line in file and add new lines below it
[英]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.