ファイル名を利用して文字列定義


アニメ『プリンセス・プリンシパル』(2017)

プリプリと略されてるので、軟弱なアニメかと思いきや、結構ハードでした。
ハードなので、ちゃんと撃つし、ちゃんと斬ります。

今回はコマンドラインで文字列の生成です。
中身は使用しないファイルの、名前だけを利用して、文字列定義を生成してみます。

takk@deb9:~/tmp$ ls
takk@deb9:~/tmp$ touch {A..Z}
takk@deb9:~/tmp$ ls
A  B  C  D  E  F  G  H  I  J  K  L  M  N  O  P  Q  R  S  T  U  V  W  X  Y  Z
takk@deb9:~/tmp$ 

26個のアルファベットのファイルができました。次に、lsコマンドのオプションを使って、プログラミングに使える文字列定義の形にしてみます。

takk@deb9:~/tmp$ ls -Qm -Itest.c > test.c
takk@deb9:~/tmp$ cat test.c
"A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P",
"Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"
takk@deb9:~/tmp$

適当にこの定義を使うプログラムを作ってみます。

takk@deb9:~/tmp$ cat test.c
#include <stdio.h>
char *str[]={
"A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P",
"Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"
};
int main()
{
        puts(str[1]);
}
takk@deb9:~/tmp$

ビルドして確認。

takk@deb9:~/tmp$ gcc test.c
takk@deb9:~/tmp$ ./a.out
B

ランダムな英単語で同じことをやってみましょう。先ほど作ったファイルは全部削除した後、次のコマンドで英単語のファイルを作ります。

takk@deb9:~/tmp$ grep -v "'" /usr/share/dict/words | shuf | head | xargs touch
takk@deb9:~/tmp$

ランダムな英単語のファイルが10個できました。

takk@deb9:~/tmp$ ls
Byrd   Persepolis  enunciating  lorded    strutted
Hiram  basics      lechers      roasters  trespassed
takk@deb9:~/tmp$

あとはlsで文字列定義を生成して出来上がり。

takk@deb9:~/tmp$ ls -Qm
"Byrd", "Hiram", "Persepolis", "basics", "enunciating", "lechers", "lorded",
"roasters", "strutted", "trespassed"
takk@deb9:~/tmp$

Leave a Reply

Your email address will not be published. Required fields are marked *

CAPTCHA