2014-06-20 234 views
7

我有這個awk腳本,我用它來過濾差異表達的基因。我有一個在河爲什麼awk腳本在Mac OS上不起作用,但在Linux上工作?

#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所有的分析和相同的命令不起作用csv文件。它也不會給出任何錯誤信息。它運行並沒有任何反應。我也對其他sed命令有同樣的問題,但使用awk很容易創建新的命令。 謝謝。

更新: MacOS X awk版本是20070501.但是,Ubuntu機器有1.3.3。命令awk --version不起作用。必須使用awk -W --version。所以我認爲這就是爲什麼它可以在Ubuntu上運行,但不能在MacOSX上運行。所以我下載mawk並使用fink安裝它,現在該命令在MacOSX中起作用。謝謝你的幫助。

更新2:其實問題不是awk。通常我在R中創建csv文件。然後我只是運行腳本來完成過濾。原來,如果我在Excel中打開csv文件或以csv格式保存Excel文件,那麼腳本不起作用(用不同的分隔符嘗試多次)。很顯然,如果您在MacOX(Excel 2011)中將電子表格保存爲.csv並嘗試在Excel中將其打開,則表明它是SYLK文件。這個在微軟網站上有描述。如果我使用OpenOffice,它工作得很好。 最好。

+0

嘗試分組的''&&作爲'($ 14 <0.05 && $ 10零一二三六六零四零二零九七七九三二三六三三二一零1' –

+3

'貓-vet「結果,RPKMs.csv |。頭-10'你看到在'^ M $'如果是這樣,那麼'dos2unix Results-RPKMs.csv'。否則編輯你的問題,包括兩臺機器的'awk --verion'的結果。祝你好運。 – shellter

+1

我剛剛用'BSD awk'版本20070501在MacOS X上,它的工作沒有'mawk'和'gawk'一樣困難 – Scrutinizer

回答

8

相同的命令名並不意味着它是相同的命令。大多數基本命令都有不同的實現,AWK就是一個例子,但幾乎所有的GNU core utils在BSD許可中都有相同的功能。你應該小心使用GNU sedBSD sed,這也是一個陷阱。

在現實中的Linux一般採用gawkmawk

$ man awk 
mawk - pattern scanning and text processing language 

的Mac OS一般nawk用途:

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

約AWK實現更多的信息,請參閱this page

3

我也有同樣的問題。在OSX 10.11.2到brew上安裝gawk解決了我的問題。

~$ 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) 
~$ 
+1

也爲我工作。 –

相關問題