#macos #awk #filtering
#macos #awk #фильтрация
Вопрос:
У меня есть этот awk-скрипт, который я использую для фильтрации генов, которые экспрессируются по-разному. У меня есть csv-файл, который был создан в R.
#Command to get DE genes
awk -F 't' '$14 < 0.05 amp;amp; $10 < -1 amp;amp; $7 > 1 { print > "Genes-Down.csv" }
$14 < 0.05 amp;amp; $10 > 1 amp;amp; $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. Обычно я создаю csv-файлы в R. Затем я просто запускаю скрипт для выполнения фильтрации. Оказывается, что если я открываю csv-файлы в Excel или сохраняю файл Excel в формате csv, то скрипт не работает (пробовал несколько раз с разными разделителями). Очевидно, что если вы сохраните электронную таблицу в формате .csv в MacOX (Excel 2011) и попытаетесь открыть ее обратно в Excel, он скажет, что это файл SYLK. На веб-сайте Microsoft есть описание этого. Если я использую OpenOffice, он работает просто отлично.
Комментарии:
1. попробуйте сгруппировать
amp;amp;
как($14 < 0.05 amp;amp; $10 < -1) amp;amp; $7 > 1
2.
cat -vet "Results-RPKMs.csv | head -10
. Вы видите^M$
в конце каждой строки? Если да, тоdos2unix Results-RPKMs.csv
. Еще отредактируйте свой вопрос, чтобы включить результатыawk --verion
с обеих машин. Удачи.3. Я только что попробовал ваш скрипт с
BSD awk
версией 20070501 на macOS X, и он работал без сбоев, какmawk
иgawk
4. К вашему сведению, mawk — это awk с минимальными функциями, урезанный, чтобы помочь ему работать немного быстрее, чем некоторые другие awk. Вам было бы намного лучше установить многофункциональный POSIX-superset gawk.
Ответ №1:
У меня тоже была такая же проблема. Установка gawk
на OSX 10.11.2 через brew решила мою проблему.
~$ 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. У меня тоже сработало.
Ответ №2:
Одинаковое имя команды не означает, что это одна и та же команда. Большинство базовых команд имеют другую реализацию, AWK является примером, но почти все утилиты ядра GNU имеют эквивалент в лицензии BSD. Вы должны быть осторожны с GNU sed
and BSD 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.