Solarisでの「grep」の使い方

Solarisでの「grep」の使い方

私は "grep"システムコマンドを実行する関数を含むRパッケージを作成しました。このパッケージはCRANでリリースされ、Solarisプラットフォームでテストするとエラーが返されました。これは、Solaris で「grep」の使用法が異なるためです。以下は、このパッケージが実行するコマンドの例です。

grep --include=\*\.txt --colour=always -n -r -e 'PATTERN'

このコマンドは、現在のフォルダ、サブフォルダなどで見つかったすべての「txt」ファイルから「PATTERN」パターンを再帰的に検索します(再帰検索)。

このコマンドで生成されたエラーメッセージはなく、エラーが発生したことに注意してください。 Solarisで同等のコマンドは何ですか?

ベストアンサー1

この問題の核心は、POSIXの互換性に関連していると思います。grepPOSIX規格に規定されているツールです。コメントで指摘したように、POSIX仕様にはまたはオプションはgrep含まれていません。実際、これらのオプションはGNUの一部であり、POSIX仕様で指定されたもの以上の機能を追加します。 GNUのマニュアルはここにあります:--include--colourgrepgrepgrephttps://www.gnu.org/software/grep/manual/grep.html

Solarisの基本ツールは、grepSun / Oracleが提供する別のPOSIX準拠の実装です。もちろん、この実装はここで必要なオプションをサポートしていません。 Solaris 10 マンページがあります。ここ、Solaris 11を見つけることができますここ

この制限はgrepSolaris のコマンドを超えています。たとえば、dateSolarisのコマンドはGNUのコマンドよりも柔軟性が低くなりますdate。 Solaris 10のコマンドはpsまた、プロセスのコマンドラインを80文字に切り捨てます。これらの問題に対する解決策/解決策として、最終的にSolaris 10および11でGNUツールを使用できます。今回の品質検査見つけることができる場所とインストール方法の詳細を確認してください。

GNU ツールが Solaris システムにインストールされ、ツール名が使用される場合、a はgコマンド名の接頭辞として使用されます。dateしたがって、、、、gdateなどにgrepなります。ggrepこのコマンドを使用すると、ggrep必要なGNU固有のオプション(または拡張)がサポートされているため、問題を解決できます。

ここで発生する可能性のある問題は、SolarisシステムにGNUツールをインストールする必要がないことです。これらのパッケージをインストールするには、いくつかの追加作業が必要です。ターゲットにGNUツールがない場合、このggrepコマンドは使用できません。

一般に、POSIXディストリビューション間の移植性を目指すソリューションは、反対のアプローチをとります。各プラットフォームに固有のツールを使用する代わりに、ソリューションはPOSIX仕様に準拠するように意図的に変更されており、特定の実装に固有の拡張を使用しません。これは、ソリューションがすべてのPOSIX互換システムで一貫して動作することを保証する唯一の方法です。

おすすめ記事