Basta ficar com o comando grep
como na extração de números:
grep -Po "http.*?$find_number.*?\.jpg"
Eu tenho um arquivo com palavras longas sem espaços, muitas linhas.
arquivo.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
Aqui está um perl hack Quick-and-Dirty para extrair as URLs que correspondem a uma linha "data-number" encontrada anteriormente na entrada.
#! /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";
}
}
Exemplo de saída da entrada dada acima:
https://site.site.com/user-user/fooo/210615/file.name.jpg
Isto parece-me a solução mais simples e não requer a configuração prévia de quaisquer variáveis:
grep -oE "http.*$(grep data-number file.txt | cut -d'"' -f2).*\.jpg" file.txt
Se você quiser evitar a saída que @manuel estava se referindo, apenas canalize-o para cut
para remover a string de consulta da seguinte forma:
grep -oE "http.*$(grep data-number file.txt | cut -d'"' -f2).*\.jpg" file.txt | cut -d? -f1