Есть ли базовый учебник для grep, awk и sed? [закрыто]

95

Я был пользователем Linux некоторое время, и у меня есть довольно приличное понимание большинства распространенных утилит командной строки. Тем не менее, те , которые приходят и снова по отношению к составлению программ grep, awkи sed.

Единственное, для чего я использовал grep - это добавление в него файлов для поиска файлов в лог-файлах, вывод psи т. Д. Я не использовал их вообще awkили вообще не использовал sed. Есть ли хорошие уроки для этих утилит?

Мача
источник
2
Еще бы! :)
gvkv
Я всегда откладывал изучение регулярных выражений, потому что говорю себе, что однажды изучу его, читая оригинальные статьи Клин по логике, которые изобрели эту концепцию до того, как она стала широко использоваться в компьютерах.
ixtmixilix
Я согласен с gvkv: если вам нужно изучить их, вы также можете изучить Perl, он делает что grep, sedи awkделает (и почти так же) и многое другое.
reinierpost
Мне всегда нравится thegeekstuff.com. Они приводятся прямо к примерам, в отличие от обычной manстраницы, которая выглядит как сноски на 90%.
изоморфизм

Ответы:

65

AWK особенно хорошо подходит для табличных данных и имеет более низкую кривую обучения, чем некоторые альтернативы.

AWK: учебник и введение

Учебник для начинающих AWK ( альтернативная ссылка )

RegularExpressions.info

учебник sed

учебник grep

info sed, info grepИ info awkилиinfo gawk

Деннис Уильямсон
источник
11

Я написал книгу о sed- Полное руководство к СЭД -Вот включает в себя учебник. Она полностью покрывает sed, а также связанные с ними команды , как grep, tr, headи tail. Также полностью охватывает регулярные выражения гораздо лучше, чем я видел в другом месте.

Я согласен с другими, что твердое понимание регулярных выражений очень важно. Я также согласен, что sedлучше использовать для более простых задач, более сложные сценарии быстро становятся неясными.

Я не согласен с тем, что awkустарело, как раз наоборот. Это похоже на многие вещи Unix (например, vi), есть кривая обучения, но оно того стоит.

Я не согласен с предложением использовать awkвместо grep. Не имеет смысла в моем опыте. grepэто так здорово и просто.

Даниэль Голдман
источник
Второе grep- я не буду брать трактор на автостраде, если сможешь помочь. И это тоже очень хорошая книга - спасибо.
mikeserv
3

Поваренной книги регулярных выражений, опубликованной O'Rielly, будет достаточно, чтобы найти вас где угодно на любом языке, который их использует.

ixtmixilix
источник
3

Авторы книги - Керниган и Пайк, что-то вроде «Среда программирования Unix».

Книга, из которой я действительно узнал, называлась «Введение в Berkely Unix».

HandyGandy
источник
2

Если вы хотите выучить один из этих трех (grep, sed и awk), вы можете просто выучить awk / gawk. , awk может выполнять функции grep и sed, то есть использовать регулярное выражение для поиска / замены текста, а также многое другое, потому что это также язык программирования. Если вы изучите внутреннюю часть gawk / awk, вам не нужно использовать grep / sed / wc / cut и т. Д. Это делает только один инструмент.

user1606
источник
о, кстати, нам даже не нужен awk, вы можете просто использовать g++ -x c++ - -o /tmp/prog && /tmp/progи вводить свои команды. Один инструмент, чтобы управлять ими всеми! :-)
Ли Райан
1
кому нужен компилятор, когда вы можете просто записать двоичный файл прямо в файл? кошка сделает, или едь, если тебе лень.
Cas
1

По моему мнению, awk более или менее устарел (однако другие будут настойчиво утверждать это мнение), большинство людей, которых я знаю в настоящее время, вместо этого используют некоторый язык сценариев, такой как perl, или сегодня часто python для продвинутых манипуляций с текстом. sed отлично подходит для более простых задач по обработке текста, я использую его постоянно. Я узнал об этом в основном, посмотрев на однострочники sed, такие как http://sed.sourceforge.net/sed1line.txt . Что касается grep: Ну, вы в основном хотите получить четкое представление о регулярных выражениях (также необходимых для sed). Я здесь только что использовал руководства texinfo.

fschmitt
источник
10
awk все еще очень полезен для манипулирования данными, передаваемыми из других команд. Для простого использования командной строки, я бы пока не счел это устаревшим.
MaQleod
Также он должен быть доступен во многих системах из-за POSIX.
echox
1
Большинство «продвинутых AWK», вероятно, лучше сделать с помощью perl, python или чего-то еще, но простые вещи приятно делать только с помощью awk.
user455
1
Awk все еще полезно знать, чтобы понять различные ответы, которые вы можете найти в Интернете при попытке решить проблему. В Интернете вы часто найдете примеры, в которых используются выражения awk, например awk '{print $3}'.
Стивен Д.
1
На работе и дома я пользуюсь awk чаще, чем sed. Ничто не может превзойти awk при фиксированных табличных данных, как dpkg -lвывод. Я бы не стал делать ничего отдаленно сложного в этом, но я бы не стал использовать инструмент без awk. Я не могу сказать то же самое для более общих языков программирования, так как мне нравятся некоторые из них.
Дж. М. Беккер