2014-01-26 6 views
0

Во-первых, есть ли лучшая линия командной строки Linux для обработки текста из HTML-страницы, загруженной с помощью wget, чем с sed и awk? Если да, пожалуйста, сообщите мне или ссылку на документ.Понимание sed/awk^и []

Во-вторых, я запутался о следующем выражении ... после ^ поисков с начала новой строки, почему пустой gsub(/[^a-z]]*/, " ") заменить небуквенные символов, а что запятая , здесь делать? И почему в этом выражении есть непревзойденный ]?

+1

«Обработка текста» - довольно неопределенное описание. что ты хочешь делать? –

+0

'[^ notthesecharacters]' –

ответ

4

Для обработки HTML вам необходимо описать, что вы хотите сделать с обработкой.

Символ ^ служит в качестве «начала строки», когда он не находится в символьном классе и может указывать начало строки (например, если регулярное выражение равно /^[^a-z]/). Когда он находится внутри класса символов (заключен в квадратные скобки, []) и является первым символом, то это метасимвол, означающий «что угодно, кроме следующих символов».

gsub функция глобального поиска и замены операции:

gsub(/[^a-z]]*/, " ") 

означает «заменить что-нибудь, что не в аз и затем ноль или более близко квадратных скобках с пустой (строка в двойных кавычках " "). Запятая - разделитель аргументов, отделяющий аргумент regex от аргумента строки замены. Вторая замкнутая квадратная скобка в регулярном выражении удивляет; это может быть легко ошибкой.

Поскольку нет третьего аргумента функции gsub, он работает на $0, текущей строке ввода.

+0

Спасибо, Джонатан, что делает запятая? – p1nesap

+0

Он отделяет аргумент regex до функции 'gsub' от заменяющего строкового аргумента функции' gsub' - очень стандартную роль для запятой. Команда 'gsub' без третьего аргумента управляет' $ 0', которая является текущей строкой ввода. –

+0

Так почему бы не просто/""? – p1nesap