使用sed过滤wget的输出

时间:2014-05-27 18:27:25

标签: bash unix sed wget

我如何从使用wget进行的后调用中获取输出并过滤除了我想要使用sed的字符串之外的所有内容。换句话说,假设我有一些wget调用返回(在某些字符串的一部分中):

'userPreferences':'some stuff' }

我如何获得字符串“some stuff”,使命令看起来像:

sed whatever-command-here | wget my-post-parameters some-URL

这也是将两者连成一条线的正确方法吗?

3 个答案:

答案 0 :(得分:0)

管道反过来工作。他们将左侧命令的输出链接到右侧命令的输入:

wget ... | sed -n "/'userPreferences':/{s/[^:]*://;s/}$//p}" # keeps quotes

使用GNU grep表示过滤可能更容易:

wget ... | grep -oP "(?<='userPreferences':').*(?=' })" # strips the quotes, too

答案 1 :(得分:0)

您希望wget的输出转到sed,因此顺序为wget foo | sed bar

wget -q -O - someurl | sed ...

-q标记会使wget的大部分输出静音,而-O -会写入标准输出,因此您可以将所有内容传输到sed

答案 2 :(得分:0)

如果您使用的是支持命名管道(FIFO)的系统或命名打开文件的/dev/fd方法,则可以避免使用管道并使用< <(...)

sed whatever-command-here < <(wget my-post-parameters some-URL)