obtendo cowsay para enviar uma palavra por vez em putty

6

Oi, estou imaginando como obter cowsay para ler uma palavra por vez a partir de um arquivo de texto. Eu estou no ground zero agora, usando massa e realmente preciso de ajuda.

    
por LOGANr18 02.10.2016 / 23:13

3 respostas

7

Este parece ser um caso raro em que a divisão de palavras é realmente desejável:

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

(o comando sleep é opcional). Ou sempre há xargs :

xargs -a file.txt -n1 cowsay
    
por steeldriver 02.10.2016 / 23:50
5

Aqui está uma coisa que eu criei rapidamente. Eu coloquei uma linha em um arquivo de teste e a alimentei no cowsay.

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

Eu o configurei para ler cada linha e, em seguida, faça um for loop de cada linha para ler cada palavra. Exemplo abaixo:

:~$ 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 |
                ||     ||

Cada linha individual desse comando se parece com:

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

Espero que isso ajude!

    
por Terrance 02.10.2016 / 23:44
5

Python one-liner:

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

Execução da amostra:

$ 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 |
                ||     ||
$ 
    
por Sergiy Kolodyazhnyy 03.10.2016 / 00:21

Tags