シェルスクリプトだとFizzBuzzが1行(ワンライナー)で書ける
はじめに
小ネタ。
シェルスクリプトでFizzBuzzを書いたらどんなふうにかけるかを試してみました。
検証環境
$ bash -version | head -n 1
GNU bash, バージョン 5.0.7(1)-release (x86_64-apple-darwin18.5.0)
$ sed --version | head -n 1
sed (GNU sed) 4.7結果
$ seq 30 | sed '0~3s/[0-9]*$/Fizz/' | sed '0~5s/[0-9]*$/Buzz/'実行結果は以下の通り。
1
2
Fizz
4
Buzz
Fizz
7
8
Fizz
Buzz
11
Fizz
13
14
FizzBuzz
16
17
Fizz
19
Buzz
Fizz
22
23
Fizz
Buzz
26
Fizz
28
29
FizzBuzz解説
はじめの seq は数字を列挙するために利用しています。
# 1から5までを出力
$ seq 5
1
2
3
4
530までの出力内容を後続する sed コマンドに引き渡しています。
sedでは、s内部コマンドで数値を除去しつつ行末に文字列を追加しています。sの前方に対象行の指定を行っています。- 2つの
sedコマンドはそれぞれ「先頭行から3行ずつ」、「先頭行から5行ずつ」処理を行っています。
- 2つの
ひとこと
ただただ楽。




ディスカッション
コメント一覧
まだ、コメントがありません