のように私は、いくつかの文字列や変数を含むファイルを、持っている:私は「{}」の間のすべての文字列を印刷したいsedの印刷複数のマッチ
${cat.mouse.dog}
bird://localhost:${xfire.port}/${plfservice.url}
bird://localhost:${xfire.port}/${spkservice.synch.url}
bird://localhost:${xfire.port}/${spkservice.asynch.request.url}
${soabp.protocol}://${hpc.reward113.host}:${hpc.reward113.port}
${configtool.store.folder}/config/hpctemplates.htb
。いくつかの行には、そのような文字列が複数あり、この場合、同じ行にとどまるべきです。出力は次のようになります。
sed -n 's/.*{//;s/}.*//p' filename
が、それは、各行の最後の発生を印刷:
cat.mouse.dog
xfire.port plfservice.url
xfire.port spkservice.synch.url
xfire.port spkservice.asynch.request.url
soabp.protocol hpc.reward113.host hpc.reward113.port
configtool.store.folder
Iは、以下を試してみました。元のファイルと同じ行に残っているすべてのオカレンスを取得するにはどうすればよいですか?
ありがとうございました。これはまさに私が必要としていたものです。 :-) awkは完璧です。私は2日間の解決策を見つけることができなかったので、私は非常に感謝しています。 – azilinha
今、私は同じファイルのすべての変数のスクリプトを実行したいと思います。スクリプトが完了し、変数を解決して値を取得します。スクリプトresolve.shを呼び出しましょう。 私はファイルを調べたいところですが、 "{}"の間に文字列がある場合は、スクリプトを実行させてください。何かのような catファイル| awk -v RS = '{|}' -v ORS = '' '/ \ n/{printf "\ n"}(NR + 1)%2 "; resolve.sh $ iを実行します。 done 私の "解決策"は、変数の解決された値だけを与えるため、間違っています。それぞれが分離された行です。私は元のファイルを持っていますが、変数があるところではresolve.shを実行させてください。 – azilinha
私がよく理解していて、すべてのパターンをループしたいなら、これを使うことができます: 'for i in $(awk -v RS = '{|}' -v ORS = '' '(NR + 1)%2 'テスト); resolve.sh $ iを実行します。 done' – oliv