XMLStarlet删除使用桑达
问题描述:
这是一直困扰我一段时间一个较为简单的任务最后N(新行)。我有以下几点:XMLStarlet删除使用桑达
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
。
我sed '${/^$/d;}' \
认为应该这样做将返回以下错误:
sed: ${/^$/d;}: No such file or directory
sed: : No such file or directory
它并不会自动管以前STDOUT
到sed
STDIN
正确。在我之前questions一个我曾与类似的东西,这sed
命令为我工作较早:
# The -e flag
sed -e '${/^$/d;}'
这对我来说没有工作:
sed 's/\\&/\&/g'
在另一方面,我也尝试使用无论是。
这能直接从XMLStarlet,而无需添加额外的sed
管办?
什么是错我的sed
?什么是正确的sed
方法?
答
在脚本的末尾放置这个工作对我来说:
printf "%s" "$(</results.txt)" > results.txt
我一直在寻找直接XMLStarlet这样做,因此这是一个临时的答案。
后\ – Cyrus
喜@Cyrus删除所有空格,我不完全理解。根据这个[问题](https://*.com/questions/369758/how-to-trim-whitespace-from-a-bash-variable)我发现'sed -e's/[[:space: ]] * $ //''应该删除尾随的空格。但是,这并不会在最后一个URL后面删除**换行符**。你能否提供一个例子? –
你的代码包含这两行:'-o'end = 2'-n | \'和'sed'$ {/^$/d;}'\'。在\之后都包含一个whilespace。删除这些空格。 – Cyrus