の「未定義のラベルを」sedの私は最近、CygwinのLinux上または下のこの単純なsed
表現の作業罰金はなく、「未定義ラベル」エラーでMac上で失敗したことが判明しましたGNUのものとは異なるオプションを持つBSDの亜種です。しかし、man sed
は、sed
のMacOSバージョンを明確に示しています。なぜこのエラーが発生したのですか?MacOSの
Q
MacOSの
7
A
答えて
3
ラベルの名前はセミコロンで最初のリテラルの改行、ないで終了します。問題を解決するには2つの簡単な方法があります。リテラル改行を追加します。
sed '/SUCCESSFUL/d
/\[java\]/!b label
s/\s\+\[java\]//
/^\s*$$/d; /Compiling/!d
:label
/^\s*$$/d
s/^/monitor: /'
、または複数-e
オプションを使用します。
sed -e '/SUCCESSFUL/d ; /\[java\]/!b label' \
-e 's/\s\+\[java\]//; /^\s*$$/d; /Compiling/!d' \
-e':label' -e'/^\s*$$/d; s/^/monitor: /'
2
SOには同様の質問がたくさんありますが、そのほとんどはプラットフォームによって異なる-i
の動作が原因です。これは異なるものです。
この場合、問題は簡単です:BSDバージョンsed
ではラベル参照が後ろに行くように見えますが、GNUバージョンでは前方参照を使用できます。 MacOSの場合、:label
はの前にのb label
と表示されなければなりません。
解決策は、ブランチの前にラベルを定義するか、または上の式の場合にブランチが "このパターンが存在しない場合はジャンプしてください"というように式を書き直すことです。この場合、式は最初の場所でラベルを必要としないように拡張することができます。
sed '/SUCCESSFUL/d ; /\s+\[java\]\s*/d; /\[java\]/s/\s\+\[java\]//; /Compiling/!d; /^\s*$$/d; s/^/monitor: /'
関連する問題
- 1. MacOSでのビデオキャプチャ
- 2. 私はMacOSの
- 3. MacOSでのビデオキャプチャ
- 4. MacOSのJava.lang.UnsupportedClassVersionError
- 5. MacOSのキーボードイベント
- 6. Qt、Googleブレイクパッド、MacOS
- 7. MacOS Xファイルシステムウォッチャー
- 8. Clang/MacOS X
- 9. MacOSアプリ内購入
- 10. MacOSでPPC G3のクロスコンパイル10.3.9
- 11. 256色モードxterm for MacOS X
- 12. iOS用アプリとMacOS X
- 13. MacOSでのC++ std :: fstreamの動作
- 14. MacOSのMono Consoleアプリケーションのテキスト音声
- 15. MacOS XのキーチェーンへのCocoaインターフェイス
- 16. Chrome/MacOSのThree.jsシャドウの品質?
- 17. dSYM MacOSでC++コードをコンパイル中のディレクトリ
- 18. MacOS-XとLinux APIのプログラミング - POSIX互換?
- 19. jarファイルのMacOS実行可能ファイル
- 20. MacOS Xのマウスカーソルを変えるImage
- 21. ポストスクリプト+追加インストールのMacOSパッケージ作成者
- 22. GUIをバックグラウンドで描画するMacOS
- 23. MacOSシステムにLunatic Pythonをインストールする
- 24. sedでxmlファイルを編集するMacOS
- 25. MacOSでglewInit()が失敗する
- 26. MacOSでJSONPを作成するには?
- 27. MacOS/Linux上でmake64 high32 low32関数
- 28. MacOS:プログラムでシリアルポートを見つける?
- 29. アプリケーションがMacOSサーバで動作しない
- 30. MacOSでJInternalFrameを宣言しない
+1と大漁を。また、問題をワンライナーではなくインデントされたコードとして視覚化するのに役立ちます:-)幸いです。 – shellter