Как извлечь строку между двумя \ 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 в качестве разделителя записей, и мы печатаем только четные записи.

  • Запустить vino-сервер в Ubuntu 16.04 lts
  • cmd2 `cmd1` vs cmd1 | xargs cmd2
  • Идентификация повторяющихся полей и печать как с awk
  • Как проверить, является ли введенная переменная буквенно-цифровой или нет в ksh?
  • Сравните файл с столбцом другого файла
  • awk не заканчивается
  • Как разбить имя файла на указанный разделитель
  • Для того, чтобы цикл не выполнялся корректно поверх ssh
  • Найти файл, проверить размер и перезаписать, когда размер файла отличается
  • текст для создания файла xls
  • Объединение двух частей вместе для создания единого сценария
  • Interesting Posts

    Как разбирать файл с конца в awk

    Одновременное разрешение нескольких изображений

    Почему я не могу избежать пробелов в сценарии bash?

    Сценарий оболочки для сопоставления номера строки из одного файла и добавления его в качестве комментариев в другой файл при совпадении

    Как отключить xscreensaver автоматически во время просмотра Flash-видео?

    Построение двоичных и зависимостей без sudo

    VIM Выполнение ключевой команды в функции

    Сервер Apache не запускается на CentOS

    Почему wget не работает через туннель ssh? Что делает прокси-сервер для предотвращения использования ssh-client?

    Как разбить текстовый файл на новые файлы

    Получение сообщения «Ошибка при попытке открыть / dev / dvd исключительно» в конце процесса записи DVD при использовании growisofs

    Аутентификация для обоих окон и пользователей Unix

    Как вызвать функцию case

    Какие оболочки не поддерживают расширение круглых скобок и требуют возврата?

    Попытка проверить целостность файла с помощью GnuPG. «ПЛОХАЯ подпись» все время

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