На самом деле это единственный раздел про unix на этом форуме
Модераторы: /dev/random , Модераторы разделов
t.t
Бывший модератор
Сообщения: 7390
Статус: думающий о вечном
ОС: Debian, LMDE
Сообщение
t.t » 05.11.2009 12:38
Нужно заменить в xml-файлах пробелы внутри тегов неким временным символом, чтобы тег обрабатывался как одно слово. Делаю
Получается "ну о-очень" медленно; возможно, потому, что в файлах очень длинные строки. Предложите более быстрый вариант.
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
/dev/random
Администратор
Сообщения: 5404
ОС: Gentoo
Сообщение
/dev/random » 05.11.2009 13:00
sed 's/</\n&/g;s/>/&\n/g' | sed '/</s/ /{}/g'
Как и первоначальный вариант, работает только если внутри тегов в кавычках нет знаков < >.
Имеет побочный эффект: отделяет теги с обеих сторон переводами строк. При желании никто не мешает их после этого удалить.
Дополнение: неплохо бы ещё перед этим _совсем_ удалить разрывы строк (например, с помощью tr), т.к. с наличием разрывов внутри тегов скрипт не справится.
/dev/random
Администратор
Сообщения: 5404
ОС: Gentoo
Сообщение
/dev/random » 05.11.2009 13:05
Дополнение 2:
tr '\n' '\r' | sed 's/</\n&/g;s/>/&\n/g' | sed '/</s/[ \t\r]/{}/g' | tr -d '\n' | tr '\r' '\n'
t.t
Бывший модератор
Сообщения: 7390
Статус: думающий о вечном
ОС: Debian, LMDE
Сообщение
t.t » 05.11.2009 14:18
Спасибо. Как я сразу не сообразил сделать чтобы каждый тег соответствовал отдельной строке?.. Конечно, так намного быстрее.
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж