我有一个巨大的文本文件,其中包含以下格式的大量文本和 URL:
https://www.website.com/BLAH-BLAH/XX/123567890?@=@81%@38&magic=1&
URL的最后一部分“1234567890”实际上是一个随机字符串,并不是每次都是相同的数字。
我想删除除此格式的 URL 之外的所有文本。我还想删除 .../XX/1234567890 之后的所有内容
澄清一下,最后我想要一个包含如下 URL 的文件:
答案1
假设您的 URL 位于新行,您将需要使用 grep 将其取出。
grep "https"
(这会搜索并返回包含 https 的所有行。如果随机文本在不包含感兴趣的 URL 的行中包含 https,则可以将引号中的搜索字符串扩展得更长。)
编辑(误读你想要它结束的内容):编辑2:要去除第一个“/XX/”之后任何10位数字的URL,你可以使用awk:
awk -F'/XX/' '{print $1 "/XX/" substr($2,0,10)}'
这将通过分隔符(在本例中为“/XX/”)分割给定的输入并返回第一个值,即第一个“/XX/”之前的所有内容,然后是 /XX/,然后是一个 10 个字符长的子字符串(从与第一个字母)的/XX/之后的内容。
您可以使用管道将它们连接在一起,如下所示(假设您的 URL 位于名为 urls.txt 的文本文件中):
cat urls.txt | grep "https" | awk -F'?' '{print $1 "/XX/" substr($2,0,10)}'
答案2
grep -Po 'https?://\S+/\w\w/\w{1,10}\b' bigfile.txt