web-dev-qa-db-ja.com

awkスクリプトがMac OSでは機能せず、Linuxでは機能するのはなぜですか?

私はこのawkスクリプトを使用して、差次的に発現する遺伝子をフィルター処理しています。 Rで作成されたcsvファイルがあります。

 #Command to get DE genes
awk -F '\t' '$14 < 0.05 && $10 < -1 && $7 > 1 { print > "Genes-Down.csv" }
             $14 < 0.05 && $10 > +1 && $8 > 1 { print > "Genes-Up.csv" }' Results-RPKMs.csv

今すぐMac OSですべての分析を開始しましたが、同じコマンドが機能しません。また、エラーメッセージも表示されません。実行しても何も起こりません。他のsedコマンドでも同じ問題がありましたが、awkを使用して簡単に新しいコマンドを作成できました。ありがとうございました。

更新:MacOS X awkのバージョンは20070501ですが、Ubuntuマシンにはmawk 1.3.3が搭載されています。コマンドawk --versionは機能しません。 awk -W --versionを使用する必要がありました。だから私はそれがUbuntuで動作するがMacOSXでは動作しなかった理由だと思います。だから私はmawkをダウンロードしてfinkを使ってインストールしましたが、コマンドはMacOSXで動作します。ご協力いただきありがとうございます。

Update2:実際には問題はawkではありませんでした。通常、Rでcsvファイルを作成します。次に、スクリプトを実行してフィルタリングを実行します。 Excelでcsvファイルを開くか、Excelファイルをcsv形式で保存すると、スクリプトが機能しないことがわかります(異なる区切り文字で数回試行した)。 MacOX(Excel 2011)でスプレッドシートを.csvとして保存し、Excelで開こうとすると、SYLKファイルであると表示されます。これについては、MicrosoftのWebサイトに説明があります。 OpenOfficeを使用すると、問題なく動作します。ベスト。

15
degopwn

私も同じ問題を抱えていました。 OSX 10.11.2にgawkbrew でインストールすると、問題が解決しました。

~$ brew install gawk
~$ gawk --version | head -n 1
GNU Awk 4.1.4, API: 1.1 (GNU MPFR 3.1.4-p1, GNU MP 6.1.1)
~$
20
vikas027

同じコマンド名が同じコマンドであるとは限りません。ほとんどの基本的なコマンドは実装が異なりますが、AWKは一例ですが、ほぼすべての GNU core utils はBSDライセンスで同等です。 GNU sedBSD sedには注意が必要です。これも落とし穴です。

実際には、Linuxは一般にgawkまたはmawkを使用します。

$ man awk
mawk - pattern scanning and text processing language

Mac OSは一般的にnawkを使用します:

$ man awk
awk - pattern-directed scanning and processing language

AWK実装の詳細については、 このページ を参照してください。

17
Zulu