На солярисе какая разница между cut и gcut? - PullRequest
0 голосов
/ 04 февраля 2010

Недавно я столкнулся с этой сумасшедшей ошибкой сценария на одной из моих машин Solaris. Я обнаружил, что срез на Solaris пропускает строки из файлов, которые он обрабатывает (или, по крайней мере, очень большие - 800 МБ в моем случае).

> cut -f 1 test.tsv | wc -l
  457030
> gcut -f 1 test.tsv | wc -l
  840571
> cut -f 1 test.tsv > temp_cut_1.txt
> gcut -f 1 test.tsv > temp_gcut_1.txt
> diff temp_cut_1.txt temp_gcut_1.txt | grep '[<]' | wc -l
       0

Мой вопрос: что, черт возьми, происходит с солярисом? Мое решение - обновить мои скрипты для использования gcut, но ... что за черт?

Ответы [ 2 ]

1 голос
/ 05 февраля 2010

Я никогда не слышал о gcut в Солярисе. сделай человеку gcut или gcut --help, чтобы увидеть, что это такое. чтобы не рисковать, используйте вырезать. В противном случае вы можете просто использовать Nawk. например (за то, что вы пытаетесь сделать)

nawk '{print $1}END{print "Total count:"NR}'

, поскольку получение поля 1 и выполнение wc аналогичны подсчету строк, просто выполните wc -l < file

0 голосов
/ 04 февраля 2010

gcut почти наверняка GNU cut , а другой, вероятно, является производным от оригинального System V. Код в последнем может фактически вернуться к исходным кодам AT & T Unix.

Утилиты GNU начали работать еще до того, как стали одной из основополагающих частей современных операционных систем, таких как Linux и OS X. Еще в 80-х многие системные администраторы устанавливали их поверх стандартных или ставили они в каталоге в PATH опережают системные. Одна из причин, по которой многие сисадмины предпочитали их, заключается в том, что они часто имели меньше произвольных ограничений, чем «нативные» утилиты. По-видимому, у программы нарезки на вашей коробке Solaris все еще есть определенные ограничения.

Я бы проверил это на другом компьютере под управлением другой ОС, чтобы убедиться, что у вас больше ничего не происходит, например, какая-то странная сделка с Unicode.

...