Какой из них быстрее обрабатывать?Печать столбцов с помощью Awk или Cut? - PullRequest
1 голос
/ 07 декабря 2010

У меня около 100 миллионов строк и 6 полей, разделенных пробелом, каждое поле имеет семизначные числа.

Мне нравится удалять 2-е поле, и я могу достичь этого с помощью следующего

1. awk '{print $1,$3,$4,$5,$6}' input.txt

2. cut --delimiter=' ' --fields=1,3-6 input.txt

Какой из них быстрее, чтобы получить желаемый результат? Есть ли способ рассчитать время процесса?

Спасибо за вашу помощь.

Ответы [ 2 ]

2 голосов
/ 07 декабря 2010

Есть ли способ рассчитать время процесса?

Да. Просто добавьте команду time перед вашим кодом, и она вернет, сколько времени это заняло. Сделай это для каждого.

time awk '{print $1,$3,$4,$5,$6}' input.txt
time cut --delimiter=' ' --fields=1,3-6 input.txt

При небольшом профилировании это выглядит как cut, только едва выигрывает в этом сценарии. Это все еще довольно впечатляющее время для awk, учитывая, насколько оно способнее, чем cut.

вырезано

$ time for i in {1..1000}; do cut --delimiter=' ' --fields=1,3-6 >/dev/null <<<"one two three four five six seven"; done

real    0m4.074s
user    0m0.496s
sys     0m2.799s

AWK

$ time for i in {1..1000}; do awk '{print $1,$3,$4,$5,$6}' >/dev/null <<<"one two three four five six seven"; done

real    0m4.511s
user    0m0.728s
sys     0m3.165s
0 голосов
/ 19 января 2017

Я проверил это, и результат:

AWK IS FASTER

Я провел тестирование с файлом ~ 2 миллионов строк:

Это всего лишь разрез со стандартным разделителем и печать в файл.

Как видите, AWK в этом случае работает примерно в 3 раза быстрее (попробуйте то же самое)

Демонстрация:

fow /home/admin/tei # wc -l prueba
2088036 prueba    
fow /home/admin/tei # cat test.sh
date +%s
awk '{print $2}' prueba > ok
date +%s
cut -d" " -f2 prueba > ok2
date +%s
fow /home/admin/tei # ./test.sh
1484848197
1484848199
1484848204
fow /home/admin/tei #

Вот несколько документов о причинах, которые делают awk быстрее:

http://www.linuxquestions.org/questions/programming-9/which-one-is-efficient-cut-cmd-or-using-awk-783673/

https://lyness.io/the-functional-and-performance-differences-of-sed-awk-and-other-unix-parsing-utilities

Надеюсь, это поможет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...