次のようなコメント行が繰り返されるファイルがある。
# ScriptAlias /cgi-bin/ "somepath"
# ScriptAlias /cgi-bin/ "otherpath"
最後に発生した後にのみ行を追加したいので、
# ScriptAlias /cgi-bin/ "somepath"
# ScriptAlias /cgi-bin/ "otherpath"
ScriptAlias /cgi-bin/ "mypath"
そのために、私は次のコマンドを使用しています。
sed -i 's:^\(.*ScriptAlias /cgi-bin/.*\):\1 \nScriptAlias /cgi-bin/ "mypath":' file
しかし、これにより、次のように発生するたびに私の行が追加されます。
# ScriptAlias /cgi-bin/ "somepath"
ScriptAlias /cgi-bin/ "mypath"
# ScriptAlias /cgi-bin/ "otherpath"
ScriptAlias /cgi-bin/ "mypath"
最後のオカレンスのみを置き換えるようにsedに指示するにはどうすればよいですか?
編集:
sedを使用してそれを解決する方法がない場合(コメントで述べられているように)、同じ結果に達する代替案を提供してください、ありがとう。
編集済み:
繰り返される行は分離することができ、それらの間に他の行を含めることができます。
# ScriptAlias /cgi-bin/ "somepath"
# ScriptAlias /cgi-bin/ "otherpath"
# ScriptAlias /cgi-bin/ "another-path"
ScriptAlias /foo/ "just-jump"
# ScriptAlias /cgi-bin/ "that's the last"