[115709] Сценарий [116051]youtube-dl[116052] поставляется со своим собственным механизмом обновления. Просто запустите это, чтобы обновить его: Смотрите помощь ([116053]--help[116054]): Это маленькая игра для кошек и мышей, что пользователи этого сценария должны периодически обновлять сценарий, потому что YouTube нарушает возможность загрузки видео с сайта. Я также призываю вас использовать одинарные/двойные кавычки при передаче URL к [116055]youtube-dl[116056] через командную строку на случай, если они включают в себя необычные символы, такие как вопросительные знаки и амперсанды. Таким образом, shell не интерпретирует эти символы! Вот пример использования одинарных кавычек:
$ youtube-dl 'http://www.youtube.com/watch?v=ONWvX8ESrsk'
Так как это целочисленная арифметика, вы, вероятно, можете сделать это прямо в оболочке - например, в bash
while IFS="$IFS," read n x y; do printf '%d\n' "$((3*y))"; done < file > newfile
Testing to stdout
$ while IFS="$IFS," read n x y; do printf '%d\n' "$((3*y))"; done < file
34603008
25165824
3460299
47185920
9437184
62914560
59768832
Вот dc
и sed
делают работу:
#v#backref courtesy Stephane's comment#v#
sed 's/.*,\(.*\)/[&,]P\1 *3p/' <<-\DATA | dc
1 1441792,11534336
2 1048576,8388608
3 1441792,1153433
4 1966080,15728640
5 393216,3145728
6 2621440,20971520
7 2490368,19922944
DATA
1 1441792,11534336,34603008
2 1048576,8388608,25165824
3 1441792,1153433,3460299
4 1966080,15728640,47185920
5 393216,3145728,9437184
6 2621440,20971520,62914560
7 2490368,19922944,59768832
Это очень быстро.
Вы можете сделать то же самое без каких-либо обратных ссылок - если это имеет какое-то значение - таким образом:
sed 's/^/[/;s/[^,]*$/&,]P& 3*p/' <file | dc
Если Вы не хотите, чтобы они все были вместе и хотите только результаты, то все равно проще:
sed 's/.*,//;s/$/ 3*p/' <file | dc
А если Вы хотите, чтобы строки были пронумерованы:
sed 's/.*,//;s/$/ 3*p/' <file | dc | nl
Вы также можете использовать awk
awk -F "," '{print $2*3}' src.dat > newfile
, где
src.dat
- ваши исходные данные (вход)
новый файл
новый файл один (выход)
-F ","
использовать в качестве разделителя полей ,
$ 2
используется для второго поле (что после ,
)