如何在 linux 上的一行中提取子字符串

How can I extract a substring in a line on linux

我想在 google 字体 css 中提取一个子字符串。在下面的文本中,我只需要 url 这样我就可以将字体本地下载到我的机器上。任何帮助将不胜感激。

src: local('Source Sans Pro Semibold Italic'), local('SourceSansPro-SemiboldIt'), url(https://fonts.gstatic.com/s/sourcesanspro/v9/fpTVHK8qsXbIeTHTrnQH6EfrksRSinjQUrHtm_nW72g.ttf) format('truetype');

在 ksh 或 bash 脚本中,您可以使用 perl:

UrlExtract=$(perl -ne 'print  if m/\burl\b\(([^)]+)/' css_file_name)

或 seds:

UrlExtract=$(sed -r 's/.*\burl\b\(([^)]+).*//' css_file_name)

如果它不在 shell 脚本中,请告诉我们您是如何尝试提取此信息的。

您也可以简单地使用 backreferences:

wantedurl=$(sed -e 's/^.*\(http.*ttf\).*$//' filename)

(例如,文件 url.txt 中的示例)

$ sed -e 's/^.*\(http.*ttf\).*$//' url.txt
https://fonts.gstatic.com/s/sourcesanspro/v9/fpTVHK8qsXbIeTHTrnQH6EfrksRSinjQUrHtm_nW72g.ttf