使用 bash 脚本从 HTML 文件中的给定字符串后提取特定字符串

Abh*_*and 6 command-line bash text-processing

我有一个 HTML 文件momcpy.html,我想从中提取给定字符串后的特定字符串。文件内容如下:

<tr><br>
<th height="12" bgcolor="#808080"><label for="<br>
 LSCRM:Abhijeet<br>
 <br>
 MCRM:Bhargav<br>
 <br>
 TLGAPI:GAURAVAURAV<br>
 <br>
 MOM:MANIKA"></td><br>
Run Code Online (Sandbox Code Playgroud)

这存在于其中一行 HTML 中。

我想提取Manika并存储在一个变量中。所以基本上我想提取MOM:之后出现的任何字符串,它可能是动态的。

我试过了:

file='/home/websphe/tomcat/webapps/MOM/web/momcpy.html'
  y=$( awk '$1=="MOM:"{print $2}' $file)
 echo "$y"
Run Code Online (Sandbox Code Playgroud)

但这没有用。

Zan*_*nna 9

我不能理智地劝这样做,因为解析HTML与正则表达式是不可能有好下场的,但你也许能够得到字符串MANIKA

sed -nr '/MOM:/ s/.*MOM:([^"]+).*/\1/p' file
Run Code Online (Sandbox Code Playgroud)

无论如何,它可以在您的样本上正常工作...

笔记

  • -n 在我们要求之前不要打印任何东西
  • -r 使用ERE
  • /string/ 找到行 string
  • s/old/new/替换oldnew
  • .* 任意数量的任意字符
  • ([^"]+) 保存一些不是的字符 "
  • \1 对已保存字符的反向引用
  • p 只打印我们改变的行


小智 5

grep -Po 'MOM:\K[^"]+' file.html
Run Code Online (Sandbox Code Playgroud)

警告:这不是一个非常健壮的解决方案;并且您的 HTML 无效