我正在尝试使用Bash和html-xml-utils将一些HTML字幕解析为数组,并且我尝试使用Lynx转储来完善它,但我遇到了同样的问题,因为我不能让我的sed
一次将多个单词放入数组中。
代码:
array=($(echo $PAGE |
hxselect -i ".sub_info_container .sub_title" |
sed -r 's/.*\">(.*)<\/a>.*/\1/' ))
echo $array
这被传递到sed:
<div class="sub_title"><a class="sub_title" href="/link">Some Random Title.</a></div><div class="sub_title"><a class="sub_title" href="/link2">Another subtitle I want.</a>
echo $array
的输出:
Some
我想要的是:
Some Random Title
没有标点符号会很好,字幕通常有?
或!
而不是句号,但它也可以包括标点符号。
我尝试过的事情:
awk
来获取元素sed
和awk
抓取文字的方法答案 0 :(得分:1)
我不知道为什么,但我的代码最终将空格分成了单独的项目。解决方案是以下代码:
array=($(echo $PAGE |
hxselect -i ".sub_info_container .sub_title" |
lynx -stdin -dump | tr " " - ))
我用tr将空格变成破折号,允许它传递给数组。正如我所说的那样,按照每个人的建议实际删除了将值赋值给数组的功能,取消了额外的括号。代码完成后,我只需将所有破折号重新转换回空格。它不漂亮但它有效!
答案 1 :(得分:0)
试试这个:
<div class="sphere"></div>
我必须在div之间添加换行符以匹配两者。我对sed并不是那么好,如果没有它就无法弄清楚如何去做。
你的主要问题是额外的括号
s='<div class="sub_title"><a class="sub_title" href="/link">Some Random Title.</a></div><div class="sub_title"><a class="sub_title" href="/link2">Another subtitle I want.</a>'
array=$(echo "$s" | sed 's/<\/div><div /\n/' | sed -r 's/.*\">(.*)<\/a>.*/\1/g')
echo "$array"