Как извлечь строку между двумя \ n в файле

У меня есть файл с рисунком

<span class="WebRupee">Rs.</span>\n29\n<br/><font style="font-size:smaller;font-weight:normal">\n3 days\n</font></td>, <td class="pricecell"><span class="WebRupee">Rs.</span>\n59\n<br/><font style="font-size:smaller;font-weight:normal">\n7 days\n</font></td>, <td class="pricecell"><span class="WebRupee">Rs.</span>\n99\n<br/><font style="font-size:smaller;font-weight:normal">\n12 days\n</font></td> 

Я хочу значения 29, 3 дня, 59 и т. Д.

в основном значение между \n value \n

Я консультировался во многих местах, но я не знаю, как избежать \ n символов.

Я пробовал: – grep -o '\n.*\n' o.txt Но это не сработало

One Solution collect form web for “Как извлечь строку между двумя \ n в файле”

Grep интерпретирует \n как символ новой строки. Похоже, что у вашего файла нет символов новой строки, у него есть \ рядом с n . Чтобы искать литературные обратные косые черты, вы должны удвоить их:

 $ grep -o '\\n[^\\]*\\n' o.txt \n29\n \n3 days\n \n59\n \n7 days\n \n99\n \n12 days\n 

С GNU grep вывод можно легко очистить, чтобы удалить \n :

 $ grep -oP '(?<=\\n)[^\\<>]*(?=\\n)' o.txt 29 3 days 59 7 days 99 12 days 

Здесь (?<=\\n) является внешним утверждением, и (?=\\n) – это прогнозное утверждение, требующее, чтобы текст, который мы сопоставляем, был окружен \n . В то время как grep возвращает неперекрывающиеся совпадения, тонкость здесь заключается в том, что внешний вид и внешний вид не учитываются в матче. Это оставляет нам проблему, что текст, который нам не нужен, также окружен \n . Например, в o.txt символы \n<br/><font style="font-size:smaller;font-weight:normal">\n less \n<br/><font style="font-size:smaller;font-weight:normal">\n окружены \n . Чтобы устранить эти строки, мы требуем, чтобы текст соответствия исключал не только \ но и < и > .

Если у нас нет GNU grep, другой вариант – использовать sed для очистки вывода:

 $ grep -o '\\n[^\\]*\\n' o.txt | sed 's/\\n//g' 29 3 days 59 7 days 99 12 days 

Другой вариант – использовать awk:

 $ awk '0==NR%2' RS='\\\\n' o.txt 29 3 days 59 7 days 99 12 days 

Здесь awk использует \ затем n в качестве разделителя записей, и мы печатаем только четные записи.

  • Попытка присвоения не переменной?
  • Как написать скрипт для автоматической компиляции и установки всех модулей Moksha?
  • Могу ли я заставить столбцы испускать пробелы вместо вкладок?
  • Получить логическое имя беспроводной сети
  • Как я могу использовать arptables для ограничения количества исходящих запросов ARP в секунду?
  • Скрипт для удаления определенных элементов span из файла HTML
  • Добавление метки времени в файл журнала?
  • sed специальный символ заменить не работает в сценарии оболочки
  • Потенциальные проблемы (если они есть) при рекурсивной замене пробелов символами подчеркивания во всех именах файлов на жестком диске
  • Как получить файл с наивысшим номером версии
  • Использование find -exec и проблемы с перенаправлением стандартной ошибки
  • Interesting Posts

    Почему разрешение отклонено для запуска npm с использованием node-dev?

    Как назначить соответствующие разрешения для общего ресурса Netatalk?

    Как узнать, как настроено мое текущее ядро ​​Linux

    Преобразование скрипта из init в systemd

    Почему мой лимит на ЦП не проверяется через группы

    Переменная Unix, не способная хранить вывод sql-запроса

    target / build CFLAGS mixup при перекрестном появлении из-за ошибки или моей глупости?

    Видео Debian Wheezy youtube отсутствует на странице

    Как сохранить процесс (стресс), пока я не проведу тестовую проверку

    ssh user @ IP sh <команда> пропущенные переменные среды

    Как загрузить файл из репо и установить его позже без подключения к Интернету?

    Подвижная точка навигации vim, прыжки средней дальности

    Как использовать определенную функцию с xargs

    Как передать журнал переменных в качестве аргумента скрипту?

    Странные вещи в терминале, когда я попал в табу

    Linux и Unix - лучшая ОС в мире.