Параметр wget --output-document = завершился неудачно, когда содержал символ ~

Любой из этих вариантов:

awk -F, '{print $1","$2","$1+$2}' filename.csv
awk -F, '{$0=$1","$2","$1+$2}1' filename.csv

И что бы это ни стоило, ваш пример в вопросе отлично сработал для меня. Локально и через инструмент awk.js.org.

$ awk -F, '{$3=$1+$2;} {print $1,$2,$3}' OFS=, filename.csv
1,11,12
2,12,14
3,13,16
4,14,18
5,15,20
$

works fine using online awk tool

0
21.05.2016, 20:36
3 ответа

Расширение тильды работает только в начале слова. (По крайней мере, в bash см., Например, https://www.gnu.org/software/bash/manual/html_node/Tilde-Expansion.html )

Вы можете использовать, скажем, - -something = $ HOME / filename , если вам нужно только сослаться на домашний каталог текущего пользователя. Поскольку - выходной-документ принимает обязательный аргумент, запись аргумента в отдельной опции тоже работает, но для дополнительных аргументов это не работает (*), поэтому вы, вероятно, захотите использовать - обычно формат foo = bar .

Если контекст представляет собой документацию, было бы полезно хотя бы упомянуть соответствующие короткие параметры, так как они короче для написания, и ваши читатели могут в любом случае наткнуться на них в коде, написанном другими. Специально для распространенных опций, таких как wget -O .

(* Например, попробуйте ls --color = auto vs ls --color auto . Я сказал «кажется», так как самое прямое упоминание об этом я могу find - это справочная страница программы командной строки getopt , документация библиотеки не так ясна.)

4
28.01.2020, 02:17

Насколько я знаю, знака '=' там быть не должно ...

wget --option-document ~/.vimrc
1
28.01.2020, 02:17

Я бы не стал использовать в документации или "в гневе", но если вы действительно хотите тильду, вы можете сделать одно из

VAR=~/.vimrc; wget ... --output-document="$VAR" 
unset VAR # to keep things tidy
# or put in ( subshell ) to keep pre-existing VAR 
# quotes only needed if $HOME (or anything you substitute for .vimrc)
# can contain whitespace or glob characters ?*[ which is pretty rare

wget ... --output-document="$(echo ~/.vimrc)"
# or if $HOME can begin with - or contain backslash, also pretty rare:
wget ... --output-document="$(printf '%s\n' ~/.vimrc)"
# both times quotes as above
0
28.01.2020, 02:17

Теги

Похожие вопросы