置換パターンでコマンドを実行するsed置換オプションの使用に問題があります。このオプションはGNUSedの拡張機能だと思いますが、ドキュメントを見つけることができませんでした。誰か知ってる?
私の問題は、置換の実行オプションを使用すると、一致するテキストを正しく抽出できないことです。MacOSX10.7.4でGNUSed4.2を使用しています
echo "12345678\r" | sed 's/.*/echo "&);"/e'
Result: );345678
Desired Result: 12345678);
\ d +などのさまざまな正規表現の一致を使用しようとしましたが、/e置換オプションを使用する機能が壊れているようです。そして、&の代わりに\ 1などの明示的なキャプチャグループを使用しようとしましたが、これも/eオプションを壊しているようです。
アップデート:
私の例は、おそらく私が最終的にやろうとしていることは、各行が一意の値を保持しているテキストファイルを取得し、それをsedに渡してuuidgenコマンドを使用することです(前の質問と同じ方法で)。私が抱えている新しい問題は、Macでコマンドを実行しているため、一致した文字列から\rが削除されていないことです。
実行したい完全なコマンドは次のとおりです。
sed 's/.*/echo "blah blah `uuidgen`,&):"/e' file.txt
アップデート2:
私のMac端末では、\ rをラインフィードとして解釈するためにecho-eを使用する必要はありません。実際、「man echo」によると、-eオプションはありません。それはすべてのターミナル環境間を移動することを困難にします:(。
kevのおかげで、Macで動作するソリューションを思いつくことができました。
sed 's/\r//; s/.*/ echo "blah blah (`uuidgen`,&);"/e' file.txt