为什么awk脚本在Mac OS上不起作用但在Linux上有效?

deg*_*pwn 13 macos awk filtering

我有这个用于过滤差异表达基因的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
Run Code Online (Sandbox Code Playgroud)

我现在开始在Mac OS上进行所有分析,同样的命令不起作用.它也不会给出任何错误消息.它运行,没有任何反应.我也遇到了与其他sed命令相同的问题,但使用awk很容易创建新的命令.谢谢.

更新:MacOS X awk是版本20070501.但是,Ubuntu机器有1.3.3的mawk.命令awk --version不起作用.不得不使用awk -W --version.所以我认为这就是为什么它适用于Ubuntu但不适用于MacOSX.所以我下载了mawk并使用fink安装它,现在命令在MacOSX中运行.谢谢你的帮助.

Update2:实际上问题不是awk.通常我在R中创建csv文件.然后我只运行脚本来进行过滤.事实证明,如果我在Excel中打开csv文件或以csv格式保存Excel文件,则脚本不起作用(尝试使用不同的分隔符多次).显然,如果您在MacOX(Excel 2011)中将电子表格保存为.csv并尝试在Excel中将其打开,则表示它是一个SYLK文件.Microsoft网站上有此描述.如果我使用OpenOffice,它可以正常工作.最好.

vik*_*027 16

我也有同样的问题.gawk通过brew在OSX 10.11.2上安装解决了我的问题.

~$ 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)
~$
Run Code Online (Sandbox Code Playgroud)

  • 也为我工作过. (2认同)

Zul*_*ulu 14

相同的命令名称并不意味着它是相同的命令.大多数基本命令都有不同的实现,AWK就是一个例子,但几乎所有的GNU核心工具都具有相同的BSD许可证.你应该小心GNU sedBSD sed,这是一个陷阱了.

实际上,Linux通常使用gawkmawk:

$ man awk
mawk - pattern scanning and text processing language
Run Code Online (Sandbox Code Playgroud)

Mac OS一般使用nawk:

$ man awk
awk - pattern-directed scanning and processing language
Run Code Online (Sandbox Code Playgroud)

有关AWK实现的更多信息,请参阅此页面.