の「未定義のラベルを」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. -bash:NPM:コマンドは昨日MacOSでドッカーMacOSの
- 3. MacOSでのビデオキャプチャ
- 4. MacOSでのビデオキャプチャ
- 5. MacOSのターミナル - SSH
- 6. MacOSのフレームバイナリ
- 7. Install4j - macOSのシングルバンドル
- 8. 私はMacOSの
- 9. はMacOSのシエラ
- 10. はMacOSの
- 11. MacOSのファイルシステム
- 12. MacOS(Java)のAccessDeniedException
- 13. スウィフトdismissViewController MacOSの
- 14. MacOSのキーボードイベント
- 15. MacOSのJava.lang.UnsupportedClassVersionError
- 16. macOSのNEProviderTargetTemplates Sierra
- 17. MacOSのシエラは
- 18. macOSのNSViewController
- 19. macOS:アクセシビリティグループ
- 20. JComboBoxのは、MacOSの
- 21. QTextEdit MacOSレンダリングのパフォーマンス
- 22. Apple FairplayのMacOSアプリ
- 23. MacOS上のC++コンパイラ
- 24. MacOSでClangのコンパイルエラー
- 25. MacOSのVirtualBoxエラーSierra
- 26. macOSの複数ページアプリケーション
- 27. GTK + - xcodeのMacOSアプリケーションバンドル
- 28. macOSのバンドルエラー10.12 Sierra
- 29. macosとiOSのlibnl
- 30. Homebrew macOS - Pythonのインストール
+1と大漁を。また、問題をワンライナーではなくインデントされたコードとして視覚化するのに役立ちます:-)幸いです。 – shellter