我有一个文件,其中有很长的单词,没有空格,有很多行。
文件.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
结果.txt:
https://site.site.com/user-user/fooo/210615/file.name.jpg
答案1
只需坚持使用grep
数字提取中的命令即可:
grep -Po "http.*?$find_number.*?\.jpg"
答案2
这是一个快速而肮脏的 perl hack,用于提取与输入中先前找到的“数据编号”行相匹配的 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
答案3
在我看来,这是最简单的解决方案,不需要事先设置任何变量:
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