получение cowsay для отправки одного слова за один раз в шпаклевке

Привет просто задавшись вопросом, как добраться cowsay прочитать одно слово за один раз от текстового файла. Я в эпицентре прямо сейчас, с помощью шпаклевки и действительно нуждаюсь в помощи.

6
задан 2 October 2016 в 16:14

3 ответа

Вот что-то, что я придумал действительно быстро. Я поместил одну строку в тестовый файл, затем подал его к cowsay.

terrance@terrance-ubuntu:~$ cat cstest.txt 
This is a test file to test cowsay

я установил его для чтения каждой строки, затем сделайте for loop из каждой строки для чтения каждого слова. Пример ниже:

:~$ cat cstest.txt | while read line; do for word in $line; do cowsay $word; done; done
 ______
< This >
 ------
        \   ^__^
         \  (oo)\_______
            (__)\       )\/\
                ||----w |
                ||     ||
 ____
< is >
 ----
        \   ^__^
         \  (oo)\_______
            (__)\       )\/\
                ||----w |
                ||     ||
 ___
< a >
 ---
        \   ^__^
         \  (oo)\_______
            (__)\       )\/\
                ||----w |
                ||     ||
 ______
< test >
 ------
        \   ^__^
         \  (oo)\_______
            (__)\       )\/\
                ||----w |
                ||     ||
 ______
< file >
 ------
        \   ^__^
         \  (oo)\_______
            (__)\       )\/\
                ||----w |
                ||     ||
 ____
< to >
 ----
        \   ^__^
         \  (oo)\_______
            (__)\       )\/\
                ||----w |
                ||     ||
 ______
< test >
 ------
        \   ^__^
         \  (oo)\_______
            (__)\       )\/\
                ||----w |
                ||     ||
 ________
< cowsay >
 --------
        \   ^__^
         \  (oo)\_______
            (__)\       )\/\
                ||----w |
                ||     ||

Каждая отдельная строка той команды была бы похожа:

:~$ cat cstest.txt | while read line
>do 
>for word in $line
>do 
>cowsay $word
>done
>done

Hope это помогает!

5
ответ дан 23 November 2019 в 07:18

Это, кажется, редкий случай, где разделение слова на самом деле желательно:

for word in $(<file.txt); do cowsay "$word"; sleep 1; done

(эти sleep команда является дополнительной). Или всегда существует xargs:

xargs -a file.txt -n1 cowsay
7
ответ дан 23 November 2019 в 07:18

Острота Python:

python -c 'import sys,subprocess;[subprocess.call(["cowsay",w]) for l in sys.stdin for w in l.split()]' < words.txt

выполненный Образец:

$ cat words.txt
this is a test
$ python -c 'import sys,subprocess;[subprocess.call(["cowsay",w]) for l in sys.stdin for w in l.split()]' < words.txt                 
 ______
< this >
 ------
        \   ^__^
         \  (oo)\_______
            (__)\       )\/\
                ||----w |
                ||     ||
 ____
< is >
 ----
        \   ^__^
         \  (oo)\_______
            (__)\       )\/\
                ||----w |
                ||     ||
 ___
< a >
 ---
        \   ^__^
         \  (oo)\_______
            (__)\       )\/\
                ||----w |
                ||     ||
 ______
< test >
 ------
        \   ^__^
         \  (oo)\_______
            (__)\       )\/\
                ||----w |
                ||     ||
$ 
5
ответ дан 23 November 2019 в 07:18

Другие вопросы по тегам:

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