как использовать grep, sed и awk для разбора тегов?

2460
Ritwik Bose

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

Может кто-нибудь помочь?

0
Будем надеяться, что это не HTML-теги: http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags :) John T 14 лет назад 2
Я думаю о чем-то вроде, если вы поставите `; tag; ; tag; `тогда моя программа пройдет и добавит` tag` к каждой строке ``. Я работаю над инструментом для создания заметок, используя markdown, но неудобно вручную ставить `>` на каждую строку или даже `>>` :-p Ritwik Bose 14 лет назад 0

3 ответа на вопрос

1
mpez0

В awk:

START  /<close tag regex>/  noprefix=="false"  noprefix=="true"  /<open tag regex>/  
Отлично. Теперь мой единственный другой вопрос: возможно ли использование сценария awk аргументов? :-п Ritwik Bose 14 лет назад 0
Да, ознакомьтесь с http://www.math.utah.edu/docs/info/gawk_15.html#SEC136 DCookie 14 лет назад 0
Также http://evc-cit.info/cit052/pass_to_awk.html DCookie 14 лет назад 0
Чтобы получить аргументы, вы помещаете awk в скрипт оболочки. Несколько минут с книгой по программированию на языке shell или awk, или с Google, могут найти множество примеров. Простой - по адресу http://www.shelldorado.com/goodcoding/awkinvoke.html#shcall. mpez0 14 лет назад 0
1
9tat

Это должно быть сделано одним из традиционно синтаксических языков (yacc и т. Д.). Выполнение этого с помощью grep и тому подобного может быть приемлемым для конкретных случаев, но регулярное выражение просто недостаточно мощно, чтобы уловить тонкости HTML.

на самом деле, я получил его на работу просто отлично. Я написал более awk в bash и сохранил сценарии awk в виде текстового файла. Но он делает все, что мне нужно. Ritwik Bose 14 лет назад 0
0
0fnt

Вы должны рассмотреть возможность использования yacc для этого. Это невозможно сделать с помощью sed, awk или grep без значительных усилий. Что касается изучения yacc, это не займет больше времени, чем изучение sed / awk / grep. И так будет легко.

видимо, не правда. Ritwik Bose 14 лет назад 0