Причина, по которой ваша уловка с использованием sed <-> xargs <-> curl не работает, заключается в том, что >
интерпретируется оболочка
, а не xargs
.
Здесь вы можете сделать несколько вещей: 1) curl -o
, как показано ниже:
for i in `cat ~/site_source_file.htm `; do
echo $i | grep http://www.site.org |
sed -n 's|^.*\(http://\(www.site.org/the/file-[0-9]*\)\.php\).*.php </a>"> </span><span> \(.*\)|curl \1 -o \3/\2|p' |
bash
done
Если вы хотите использовать xargs
, вы можете:
for i in `cat ~/site_source_file.htm `; do
echo $i | grep http://www.site.org |
sed -n 's|^.*\(http://\(www.site.org/the/file-[0-9]*\)\.php\).*.php </a>"> </span><span> \(.*\)|\1 \3/\2|p' |
xargs -r -n 2 sh -c 'shift $1; curl $1 > $2' 2 1
выполнено;