我正在尝试从网址中获取一些ID。
在我的脚本中,我使用while循环和wget命令点击URL,然后将输出保存在文件中。
然后在同一循环中我grep XYZ User ID:
并在此字符串后面有3行并将其保存到另一个文件中。
当我打开此输出文件时,我会找到以下行。
< p >XYZ User ID:< /p>
< /td >
< td>
< p>2989288174< /p>
因此,使用grep
或其他任何内容我如何打印以下输出
XYZ User ID:2989288174
答案 0 :(得分:3)
假设一个常量tag
模式:
<p>XYZ User ID:</p>
</td>
<td>
<p>2989288174</p>
grep
应该是最好的方式:
grep -oP '(?<=p>)([^>]+?)(?=<\/p)' outputfile|while read user;do
read id
echo "$user $id"
done
请注意, look-behind 表达式的长度不能可变。这意味着您无法使用量词?
,*
,+
等,也可以在其中使用不同长度的项目。
对于可变长度标签awk
可能非常适合oneliner标签:
awk '/User ID/{print ""}/p *>/{printf $3}' FS='(p *>|<)' outputfile
答案 1 :(得分:1)
这应该有效(sed
扩展正则表达式):
sed -nr 's#<\s*p\s*>([^>]*)<\s*/\s*p\s*>#\1#p' file | tr -d '\n'
输出:
XYZ User ID:2989288174