Как удалить текст в файле до и после некоторого шаблона

У меня есть файл с длинными словами без пробелов, много строк.

file.txt:

data-number="210615" ... .... .... 1280654445itemitemURLhttps://site.site.com/user-user/fooo/210615/file.name.jpg?1280654445name...... ... ... ... ... 

 #!/bin/bash find_number=$(grep -Po 'data-number="\K[^"]*' file.txt) get-url= (copy from "https" to "fooo/" and add variable $find_number and add from "/" to end "jpg" maybe : get-url=("https*,*fooo/",$find-number,"/*.jpg") this is work or other idea? echo $get-url > result.txt 

result.txt:

 https://site.site.com/user-user/fooo/210615/file.name.jpg 

3 Solutions collect form web for “Как удалить текст в файле до и после некоторого шаблона”

Просто придерживайтесь команды grep как при извлечении числа:

 grep -Po "http.*?$find_number.*?\.jpg" 

Вот быстрый и грязный perl-хак, чтобы извлечь URL-адреса, соответствующие строке «номер-номер», найденной ранее на входе.

 #! /usr/bin/perl use strict; my $datanumber = 'stringthatwillneverbeintheinput'; while(<>) { chomp; if (m/^data-number/) { $datanumber = $_; $datanumber =~ s/^.*=|"//g; } elsif (m/$datanumber/) { s/^.*(http.*\.jpg).*/$1/; print "$_\n"; } } 

Пример вывода из приведенного выше ввода:

 https://site.site.com/user-user/fooo/210615/file.name.jpg 

Это кажется мне самым простым решением и не требует предварительной настройки каких-либо переменных:

 grep -oE "http.*$(grep data-number file.txt | cut -d'"' -f2).*\.jpg" file.txt 

Если вы хотите избежать вывода, на который ссылался @manuel, просто нарисуйте его, чтобы cut чтобы удалить строку запроса так:

 grep -oE "http.*$(grep data-number file.txt | cut -d'"' -f2).*\.jpg" file.txt | cut -d? -f1 
  • удаление избыточности из выходных столбцов
  • Цитирование файлов листинга в UNIX
  • Отправка команды на экран и syslog
  • Почему этот скрипт работает на Ubuntu, а не на Debian?
  • Чтение строк из файла в переменную
  • Вырезать письмо из каждой строки файла
  • В чем смысл $? в сценарии оболочки?
  • bash, список всех файлов по определенному размеру
  • Как я могу записать выходные данные сценария Shell в файл журнала
  • Как назначить слова с пробелами как целое имя переменной в сценарии оболочки?
  • Скрипт выполняется иначе, если выполняется из udev
  • Linux и Unix - лучшая ОС в мире.