Вообще говоря, чем более специализированный инструмент, тем он быстрее. Таким образом, в большинстве случаев вы можете ожидать cut
и grep
быть быстрее sed
, и sed
быть быстрее, чем awk
. Если вы сравниваете более длинные конвейеры более простых инструментов с одним вызовом более сложного инструмента, практического правила не существует. Это имеет значение только при больших входах (скажем, миллионах строк); для коротких входов вы не увидите никакой разницы.
Преимущество более сложных инструментов, конечно, в том, что они могут делать больше вещей.
Ваши команды используют кошку без необходимости. Вместо этого используйте перенаправление (особенно если вы беспокоитесь о скорости, хотя вам, вероятно, не стоит беспокоиться о скорости, пока вы не выполните тесты производительности).
<fileName awk '/WORD/ { print $2 }'
<fileName grep WORD | cut -f 2 -d ' '
Эти команды почти эквивалентны. Различия:
- awk и grep имеют разные синтаксисы регулярных выражений . Awk и
grep -E
имеют почти идентичные синтаксисы регулярных выражений (расширенные регулярные выражения).
cut -d ' '
рассматривает каждый отдельный пробел как разделитель. Разделителем Awk по умолчанию является любая последовательность пробелов, которая может состоять из нескольких пробелов, табуляции и т. Д. Вы не можете использовать произвольные последовательности пробелов в качестве разделителей cut
. Для того, чтобы использовать отдельные пробелы в качестве разделителей в AWK, установите разделитель полей в регулярное выражение , которое соответствует единое пространство, кроме регулярного выражения , состоящего из одного пространства (которое является частным случаем означает «любая последовательность пробелов», то есть по умолчанию): awk -F '[ ]' '/WORD/ {print $2}'
.
Ru Первое правило оптимизации программы: не делайте этого. Второе правило оптимизации программы (только для экспертов!): Пока не делайте этого. - Майкл А. Джексон
echo filename
илиcat filename
?