在特定的htaccess文件中search和replace – linux

我需要将这一行添加到位于/home/*/site/assets/.htaccess中的每个.htaccess文件,其中*可以是任意数量的目录

我需要find这个文本

 RewriteRule ^(.*)$ /site/assets/sym/$1 [L,NS] 

并在其上面添加一行,或者用此replace它

 RewriteCond %{REQUEST_URI} !^/site/assets/sym RewriteRule ^(.*)$ /site/assets/sym/$1 [L,NS] 

我在网上看过这个网站,但是我不清楚如何处理

  1. 生成我想编辑的文件列表(所以find所有匹配这个path的文件:/home/*/site/assets/.htaccess)
  2. 在replace文本中添加换行符

任何人都可以提出一个明确解释它的资源,否则,让我知道我是否正在寻找这个工作的正确工具?

我的操作系统是OS OS 5.5,我运行一个LAMP服务器,如果这有很大的区别,Apache 2。

谢谢

 #!/bin/bash 

类似的东西:

 for dir in `find /home -type d | grep 'site/assets'` do htaccess="$dir/.htacess"; sed -ibak -e 's@RewriteRule \^\(.*\)\$ /site/assets/sym/\$1 \[L,NS\]@RewriteCond %{REQUEST_URI} !^/site/assets/sym\n\0@' $htaccess done 

在我的箱子上:

 sed -e 's@RewriteRule \^\(.*\)\$ /site/assets/sym/\$1 \[L,NS\]@RewriteCond %{REQUEST_URI} !^/site/assets/sym\n\0@' test Foobarlol RewriteCond %{REQUEST_URI} !^/site/assets/sym RewriteRule ^(.*)$ /site/assets/sym/$1 [L,NS] RewriteRule ^(.*)$ /site/assets/test/$1 [L,NS] Bleh 

test

 Foobarlol RewriteRule ^(.*)$ /site/assets/sym/$1 [L,NS] RewriteRule ^(.*)$ /site/assets/test/$1 [L,NS] Bleh