这是一项相当简单的任务,一直困扰着我。我有以下内容:
homepage=$(curl "https://example.com/")
xmlstarlet --quiet fo --html <<<"$homepage" |
xmlstarlet sel -T -t \
-m "//*[@id='financial']/tbody/tr/td" \
--if 'not(starts-with(a//@href,"http"))' \
-o 'https://example.com' \
--break \
-v 'a//@href' \
-o '/?start=1' \
-o '&' \
-o 'end=2' -n | \
sed '${/^$/d;}' \
>> "results.txt"
我想要删除xmlstarlet
中-o 'end=2' -n | \
生成的最后一个换行符。当它到达结尾时,如果链接列表仍然产生-n
(换行符),就好像它继续添加更多链接,但实际上我想避免最后一个-n
实例相应的href
实例{1}}。
我应该执行此操作的sed '${/^$/d;}' \
会返回以下错误:
sed: ${/^$/d;}: No such file or directory
sed: : No such file or directory
它以某种方式无法正确地将之前的STDOUT
传递给sed
STDIN
。在我以前的一个questions中,我使用了类似的东西,这个sed
命令在我之前工作过:
sed 's/\\&/\&/g'
另一方面,我也尝试过使用:
# The -e flag
sed -e '${/^$/d;}'
这对我也不起作用。
这可以直接从XMLStarlet完成,而无需添加额外的sed
管道吗?
我的sed
有什么问题?什么是正确的sed
方法?
答案 0 :(得分:0)
将这个放在脚本的末尾对我有用:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<span class='bold'>Class 1 / Class 2 / Class 3</span>
我一直在寻找直接在XMLStarlet中执行此操作,因此这是一个临时答案。