我如何从使用wget进行的后调用中获取输出并过滤除了我想要使用sed的字符串之外的所有内容。换句话说,假设我有一些wget调用返回(在某些字符串的一部分中):
'userPreferences':'some stuff' }
我如何获得字符串“some stuff”,使命令看起来像:
sed whatever-command-here | wget my-post-parameters some-URL
这也是将两者连成一条线的正确方法吗?
答案 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)