【发布时间】:2023-03-18 22:58:02
【问题描述】:
我有这个 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 文件或以 csv 格式保存 Excel 文件,则该脚本不起作用(尝试使用不同的分隔符多次)。显然,如果您在 MacOX(Excel 2011)中将电子表格另存为 .csv 并尝试在 Excel 中打开它,它会说它是一个 SYLK 文件。 Microsoft 网站上有关于此的说明。如果我使用 OpenOffice,它工作得很好。
【问题讨论】:
-
尝试将
&&分组为($14 < 0.05 && $10 < -1) && $7 > 1 -
cat -vet "Results-RPKMs.csv | head -10。你在每一行的末尾看到^M$吗?如果是这样,那么dos2unix Results-RPKMs.csv。否则编辑您的问题以包括来自两台机器的awk --verion的结果。祝你好运。 -
我刚刚在 MacOS X 上使用
BSD awk版本 20070501 尝试了您的脚本,它和mawk和gawk一样顺利运行 -
仅供参考 mawk 是一个功能最少的 awk,经过精简以帮助它比其他一些 awk 运行得更快一些。最好安装功能丰富的 POSIX 超集 gawk。