Печатать совпадающие строки шаблона рядом [закрыто]

Use pegar y establezca el delimitador en coma en lugar de tabulador con -d:

paste -d, file1 file2
-3
03.07.2017, 11:29
3 ответа

Если вы хотите разобрать сообщение целиком, используйте «адреса» вот так:

sed -n '/https:/h;/Path:/{H;g;s/\n/ /p;}' yourfile

Не выводить по умолчанию(-n). Поместите строку, начинающуюся с https:, в буфер хранения, затем для строки Path:добавьте ее в буфер хранения, переместите ее в пространство шаблонов и замените новую строку пробелом.

Или другой подход:

sed -e '/^https:/!d;:a' -e '$!N;/Path:/!ba' -e 's/\n\n*/ /' yourfile

Это означает :Если строка не начинается с https:, удалите ее(/^https:/!d). В противном случае запустите цикл (:a), чтобы добавить новые строки, если они есть ($!N), пока мы не добавим строку Path:. /Path:/!ba. Наконец, замените новые строки пробелом, чтобы поместить все в одну строку(s/\n\n*/ /).

0
28.01.2020, 05:19

Вариант 1

Если вы хотите разбить на пустые строки,

awk '{printf $0; printf ($0=="")? "\n" : " "}' /path/to/file.txt

Пояснение

  • printf $0:распечатать текущую строку (без новой строки)
  • printf ($0=="")? "\n" : " ":Если текущая строка пуста ($0=="")?, то вывести новую строку "\n", иначе вывести пробел " ".
  • Н.Б. это печатает конечный пробел в последней строке, что может быть или не быть проблемой для вас.

Вариант 2

Однако, если вы просто хотите разбить каждую третью строку,

awk '{printf $0; printf (NR%3=="0")? "\n" : " "}' /path/to/file.txt

Пояснение

  • (NR%3=="0"):здесь условные тесты, если номер строки NRпо модулю 3равен нулю. то есть он будет печатать новую строку каждые три строки ввода, иначе просто напечатать пробел.
0
28.01.2020, 05:19

Метод -1 :Мы вызываем Perl в режиме абзаца -00и делаем ORS=\n -lи разрешаем чтение файла -в режиме с явной печатью -n. Выбирается текущая запись $_, которая начинается с https :// и ее конец -позиции записи -заполняется следующей записью <>.Наконец, новые строки в этой добавленной текущей записи удаляются, а то, что осталось, выводится на стандартный вывод. ORS будет добавлен к текущей записи.

perl -ln -00e 's/$/$".<>/e and print tr/\n//dr if m|^https://|' file.txt

В этом методе мы устанавливаем цикл, когда встречаем строку https :// и продолжаем добавлять пустые строки, которые находим по пути к первой не -пустой. Все это время мы продолжаем удалять эти пустые строки.

sed -ne '
   \|^https://|!d
   :loop
      N
      s/\n$//
   tloop
   s/\n/ /p
' file.txt

Выход

https:// arkit.co.in/ Path Read (03/07/2017) Path: /website/upload/file.txt
https:// arkit.co.in/ Path Read (04/07/2017) Path: /website/upload/file1.txt
0
28.01.2020, 05:19

Теги

Похожие вопросы