Ну так себе пример. sed -- потоковый процессор, grep -- искалка, awk -- язык процессинга текста.
Все три умеют в регулярки для очень навороченного парсинга с кучей перекрывающихся вариантов. sed и awk - вообще Тьюринг полные языки по сути, на них обоих можно черта лысого написать.
Тогда давайте считать всё, что умеет в регэкспы, имеющим одинаковое назначение.
Мой тезис был в том, что у этих инструментов куча дублирующего функционала. По сути любую типичную задачу для любого из этих инструментов можно успешно реализовать и на другом.
Можно-то можно, но это потребует очень разных усилий. Искать удобнее всего грепом, заменять -- седом, делать манипуляции с полями -- авком. Да, их можно заменить один другим, но это будет забивание шурупов молотком и закручивание гвоздей отверткой.
Это просто набор предубеждений. Если вы попробуете реально сравнить примеры реализации типичных задач на этих инструментах, они не будут сильно отличаться по трудоемкости. «Удобнее» тут упирается скорее в личный опыт и стереотипы. Кто какой инструмент лучше знает, тот ему и «удобнее».
Имею счастье пользоваться всеми троими практически ежедневно (cut как-то исторически не зашёл, да и чёрт с ним), и нахожу, что вы не правы. Опять же, вкусовщина. Но в данном случае уже на моей стороне мнение большинства -- грепом, в основном, ищут, седом заменяют, а авком тасуют поля.
В основном люди часто пишут cat blablabla | grep foobar Это не означает, что данный подход правильный и оптимальный
И, честно говоря, я не очень понял, в чем я, как вы считаете, неправ? Какая из реальных задач по-вашему принципиально отличается по сложности реализации на этих инструментах?
Первое, что приходит в голову -- селекторы авка значительно уступают по гибкости и юзабельности грепу. Хватит?)
Конкретнее, если можно. Что за селекторы?
У авка есть // перед главным блоком. Это называется "селектор". Им можно фильтровать входные строки. echo bzz bzz | awk '/zz/ { print $0 }'
см. выше. Греп значительно удобнее.
Чем? В чем кардинальное отличие-то? Можно конкретику добавить?
Сделайте, пожалуйста, авком grep -PIrA4 'when:$' быстро, не читая мануалы
awk '/when:$/ {print; for(i=1; i<=4; i++) {getline; print}}' -R .
Что-то пошло не так (venv-ansible-212) 0 nbw@suitcase.nbw74.com southbridge/aux% (master:✚) awk '/when:$/ {print; for(i=1; i<=4; i++) {getline; print}}' -R . awk: fatal: cannot open file `-R' for reading: No such file or directory Думаю, разница с грепом очевидна.
Не, ну это не спортивно, так я тоже могу >grep -PIrA4 'when:$' grep: invalid option -- P
Что за платформа? Не мак, случайно?
Обсуждают сегодня