需要将文件中最后一个 VirtualHost 字符串移动到 eof。我尝试使用 sed
#!/bin/bash
tac infile.txt | sed "s/<\/VirtualHost>//; ta ; b ; :a ; N ; ba" | tac
echo "</VirtualHost>" >>infile.txt
当前文本:
</VirtualHost>
#Added for Patch
<LocationMatch ^/bea_wls_internal/>
RewriteEngine ON
</VirtualHost>
RewriteOptions inherit
</LocationMatch>
所需文本:
</VirtualHost>
#Added for Patch
<LocationMatch ^/bea_wls_internal/>
RewriteEngine ON
RewriteOptions inherit
</LocationMatch>
</VirtualHost>
最佳答案
ed
编辑器在这种情况下会派上用场。它在调用时将自己定位在文件的最后一行,因此您需要做的就是向后搜索您想要的行并将其删除。您也可以同样轻松地添加回行(首先这样做是有意义的):
echo 'a
</VirutalHost>
.
?</VirtualHost>?
d
wq' | ed -s infile.txt
-s
选项会抑制 ed
的诊断输出。
a
追加到仅包含 的行。
?
向后搜索
d
删除一行
wq
写入文件并退出
关于linux - 在 unix/linux 中删除文件中最后一次出现的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19006421/