web-dev-qa-db-ja.com

カウセイにパテで一度に一つの言葉を送らせる

こんにちは、テキストファイルから一度に1つのWordを読み取るためにcowsayを取得する方法について疑問に思っています。現在、PuTTYを使用しているグラウンドゼロで、本当に助けが必要です。

6
LOGANr18

これは、Word分割が実際に望ましいまれなケースのようです。

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

sleepコマンドはオプションです)。または、常にxargsがあります。

xargs -a file.txt -n1 cowsay
7
steeldriver

すぐに思いついたものがあります。テストファイルに1行を入力してから、それをcowsayに送りました。

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

各行を読み取るように設定し、各行のfor loopを実行して各Wordを読み取ります。以下の例:

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

お役に立てれば!

5
Terrance

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