シェル・ワンライナーの遊び場

概要

最終更新日

お知らせ

過去のお知らせ

情報

このサイトとシェル芸について

シェル芸オンラインジャッジとは

シェル芸とは

シェル芸の例

Example 1: Output random String

head -c 65536 /dev/urandom | tr -dc a-zA-Z0-9 | cut -c -16

Example 2: Delete all .jpg files

find /tmp | grep .jpg$ | xargs -I@ rm @

Shellgei Online Judge Repository

謝辞

遊び方

  1. 問題を選択
  2. シェル芸を記入
  3. シェル芸を実行
  4. 正誤判定の結果を確認
更新履歴
2025
  • - 01/04: GENERAL-48追加
  • - 01/02: サーバメンテナンス、問題追加
2024
  • - 12/27: 安定版1.1.0リリース
  • - 12/26: 全問題のテスト作成、answerフォルダ作成
  • - 12/22: サーバメンテナンス
  • - 11/29: GIF画像に対応
  • - 11/28: news追加
  • - 11/27: GENERALの回答例を追加、正誤判定を修正
  • - 11/24: concatとcowsayを削除
  • - 11/23: ドキュメントのメンテナンス
  • - 11/22: ドキュメントのメンテナンス
  • - 11/21: リポジトリを一つにまとめる、ローカル環境でテスト可能に
  • - 11/04: テスト追加、HTTPS更新、問題数表示
  • - 11/02: 正誤判定の処理をサーバ側へ移動(完了)
  • - 10/28: 正誤判定の処理をサーバ側へ移動
  • - 10/22: 問題選択にバグがあったので修正
  • - 10/20: コマンドを入力するボタンを設置
  • - 10/16: Ctrl+Enterでシェル芸を実行できる機能追加
  • - 10/14: ジャッジ修正(正誤判定で必ず正解になる問題の解決)
  • - 10/01: メンテナンス、HTTPS更新
  • - 09/07: テキスト修正
  • - 09/06: 画像生成問題追加
  • - 09/04: メンテナンス一旦完了、システム全体を見直し
  • - 09/03: ブラウザ側のアプリを整理
  • - 09/01: JavaScript側でもボタンの連打防止
  • - 08/31: 全体を整理, 連続実行の予防
  • - 08/27: 問題集データを整理
  • - 08/26: 問題集データのリンクを追加
  • - 08/25: 日本語と英語を分ける、SSL証明書更新、問題追加
  • - 08/11: 微修正
  • - 08/07: SSL証明書更新
  • - 07/18: SSL証明書更新
  • - 06/14: 練習問題wc,uniqを追加、SSL証明書更新
  • - 05/27: 練習問題sortを追加
  • - 05/25: 練習問題sortを追加
  • - 05/23: 練習問題awkを追加
  • - 05/17: 練習問題awkを追加
  • - 05/15: 誤字脱字を修正、練習問題awkを追加
  • - 05/13: 練習問題awkを追加、等幅フォント指定
  • - 05/12: 練習問題grepを追加
  • - 05/11: 練習問題findを追加
  • - 05/06: 練習問題sedを追加
  • - 05/05: デザイン微修正、SSL証明書更新、練習問題catを追加
  • - 05/04: お知らせのレイアウトを更新、シェル芸IDを追加
  • - 05/03: 一周年、お知らせを追加
  • - 05/02: 問題タイトル修正、問41と問42を追加
  • - 05/01: デザイン修正
  • - 04/30: 拡大表示不可、その他微修正
  • - 04/29: システム修正、レイアウト修正
  • - 04/28: 説明文を微修正
  • - 04/27: レイアウト調整
  • - 04/26: フォント指定
  • - 04/25: 練習問題echo、実行環境、シェル芸の例を追加
  • - 04/24: 練習問題の項目を追加
  • - 04/23: レイアウト修正
  • - 04/22: レイアウト修正
  • - 04/21: 問39、問40を追加、デザイン修正
  • - 04/20: システムを修正、英語対応(?)
  • - 04/17: サーバ側の処理を修正、タイムアウト機能修正
  • - 04/13: 更新履歴作成、画像のリンク修正
  • - 03/05: SSL証明書更新
2023
  • - 11/10: 問題追加
  • - 10/01: 問題追加
  • - 09/02: 問題追加
  • - 08/06: 問題追加
  • - 07/01: 問題追加
  • - 06/03: 問題追加
  • - 05/20: 問題追加
  • - 05/13: 問題追加、レイアウト修正
  • - 05/07: 問題追加、HTMLタグに対応
  • - 05/03: サービス開始
お問い合わせ

SNS

GitHub

Author

その他

注意事項

回答例

おすすめ

回答例

GENERAL
1 - 10

1

echo test

2

cat input.txt

3

seq 10

4

cat input.txt | awk '{a=0;for(i=1;i<=NF;i++){a+=$i};print a}'

5

seq 9 | awk 'BEGIN{a=0;b=1;print a;print b}{c=a+b;print c;a=b;b=c}'

6

echo "scale=11; 4*a(1)" | bc -l | cut -c 1-12

7

echo "scale=101; 4*a(1)" | bc -l | tr -d '\n' | tr -d '\\' | cut -c 1-102

8

cat input.txt | awk '{for(i=0;i<10;i++){for(j=0;j<10;j++){if(i+j==$1&&i*2+j*4==$2){print i, j}}}}'

9

cat input.txt | xargs | sed -E 's;([0-9]*/[0-9]*/[0-9]*);\n\1;g' | sort -r -k 1,1 | awk '{for(i=1;i<=NF;i++){print $i};printf("\n")}'

10

cat input.txt | sed -e '2 s/は に/は川に/' | sed 's/ん が/ん魚が/;s/は に/は新幹線に/;s/、 が/、富士山が/'
11 - 20

11

cat input.txt | rs -T | awk '{print $3,$2,$1}'

12

cat input.txt | tr 01 10

13

echo {a..z} | tr $(cat input.txt) '                         ' | awk '{print $1}'

14

cat input.txt | sort -s -k 2,2 | awk 'BEGIN{a=1;printf("%d",a)}{if($2==a){printf(" %s",$1)}else{a+=1;printf("\n%d %s",a,$1)}}'

15

cat input.txt | factor | awk '{if(NF==2){print "YES"}else{print "NO"}}'

16

cat input.txt

17

cat input.txt | awk 'BEGIN{a=0}{b[a]=$1;a+=1}END{for(i=0;i<length(b);i++){for(j=i+1;j<length(b);j++){if(b[i]>b[j]){c=b[i];b[i]=b[j];b[j]=c}}};for(k=0;k<length(b);k++){print b[k]}}'

18

cat input.txt | awk 'BEGIN{a=1;b=100}{if($2==">"){if(a<$3){a=$3}}else{if(b>$3){b=$3}}}END{for(i=1;i<=100;i++){if(i>a&&i<b){print i}}}'

19

cat input.txt | awk '{print substr($0,1,length($0)/3)}'

20

cat input.txt | awk '{z=$0;a=0;for(i=2;i<=z;i++){if(z%i==0){z/=i;a=1;printf("%d ",i);i=1}};printf("\n")}' | awk '{if(NF==1){print "素数"}else{for(i=1;i<=NF;i++){printf("%d ",$i)}printf("\n")}}' | sed 's/ $//g'
21 - 30

21

cat input.txt | awk '{a=0;for(i=1;i<length($0);i++){if(substr($0,i,1)!=substr($0,length($0)-i+1,1)){a=1}};if(a==0){print "YES"}else{print "NO"}}'

22

echo 'l(2)/l(10)' | bc -l | awk '{printf("%lf*1024\n",$0)}' | bc -l | awk '{print int($0)+1}'

23

cat input.txt | awk '{z=0;for(i=1;i<=length($0);i++){a=substr($0,i,1);if(a=="A"||a=="B"||a=="C"){z+=1}else if(a=="D"||a=="E"){z+=2}else{z+=3}};print z}'

24

echo | awk '{m=0;for(a=0;a<14;a++){for(b=0;b<19;b++){for(c=0;c<12;c++){for(d=0;d<24;d++){for(e=0;e<11;e++){if(a*15+b*11+c*18+d*8+e*21<=185&&a*121+b*86+c*162+d*68+e*187>m){m=a*121+b*86+c*162+d*68+e*187}}}}}};print m}'

25

echo {A,B,C}{A,B,C}{A,B,C} | xargs -n1 | awk '{if(substr($0,1,1)!=substr($0,2,1)&&substr($0,1,1)!=substr($0,3,1)&&substr($0,2,1)!=substr($0,3,1)){print $0}}'

26

cat input.txt | sed -E 's/(.)/\1 /g' | awk '{for(i=1;i<=NF;i++){a[NR,i]=$i}}END{for(i=1;i<=5;i++){for(j=1;j<=5;j++){b[i,j]=999}};b[1,1]=0;c=0;while(c==0){for(i=1;i<=5;i++){for(j=1;j<=5;j++){if(a[i,j]!="#"){if(i>1&&a[i-1,j]!="#"&&b[i-1,j]+1<b[i,j]){b[i,j]=b[i-1,j]+1};if(j>1&&a[i,j-1]!="#"&&b[i,j-1]+1<b[i,j]){b[i,j]=b[i,j-1]+1}}}};if(b[5,5]!=999){c=1;print b[5,5]} }}'

27

cat input.txt | sed 's/://g' | awk '{print $1,$3,$4,$6}' | awk '{printf("%s %s %04d %04d\n",$1,$2,$3,$4)}' | awk 'BEGIN{a["A"]="0759";a["B"]="9999";a["C"]="9999";a["D"]="9999"}{if(a[$1]<$3&&a[$2]>$4){a[$2]=$4}}END{print a["D"]}' | sed -E 's/(..)(..)/\1:\2/g' | sed 's/^0//g'

28

echo | awk '{for(i=0;i<5;i++){for(j=0;j<5;j++){if(i==0||i==4||j==0||j==4){printf("3")}else if((i==1||i==3||j==1||j==3)){printf("2")}else{printf("1")}};printf("\n")}}'

29

echo | awk 'BEGIN{for(i=0;i<5;i++){for(j=0;j<5;j++){a[i,j]=10}}}{i=2;j=3;n=11;f=0;d=1;d2=1;p=0;while(1){a[i,j]=n;n+=1;if(i==0&&j==4||(i>4&&j>4)){break};if(d>0){d-=1}else if(d==0){d=d2;if(p==1){d2+=1;p=0}else{p=1};f+=1};if(f>3){f=0};if(f==0){i+=1}else if(f==1){j-=1}else if(f==2){i-=1}else if(f==3){j+=1}}}END{for(i=0;i<5;i++){for(j=0;j<5;j++){printf("%d ",a[i,j])};printf("\n")}}' | sed 's/ $//g'

30

cat input.txt | sed -E 's/(.)/\1\n/g' | awk '{if($1=="A"){print "S"}else if($1=="B"){print "T"}else if($1=="C"){print "U"}else if($1=="D"){print "V"}else if($1=="E"){print "W"}else if($1=="F"){print "X"}else if($1=="G"){print "Y"}else if($1=="H"){print "Z"}else if($1=="I"){print "A"}else if($1=="J"){print "B"}else if($1=="K"){print "C"}else if($1=="L"){print "D"}else if($1=="M"){print "E"}else if($1=="N"){print "F"}else if($1=="O"){print "G"}else if($1=="P"){print "H"}else if($1=="Q"){print "I"}else if($1=="R"){print "J"}else if($1=="S"){print "K"}else if($1=="T"){print "L"}else if($1=="U"){print "M"}else if($1=="V"){print "N"}else if($1=="W"){print "O"}else if($1=="X"){print "P"}else if($1=="Y"){print "Q"}else if($1=="Z"){print "R"}}' | xargs | sed 's/ //g'
31 - 40

31

cat input.txt | xargs | awk '{a=0;for(i=1;i<=1024;i++){if($1%i==0&&$2%i==0&&$3%i==0){a=i}};print a}'

32

cat input.txt | xargs | awk '{a=$1;for(i=100;i>=1;i--){for(j=100;j>=1;j--){for(k=100;k>=1;k--){if($1*i==$2*j&&$2*j==$3*k){a=$1*i}}}};print a}'

33

cat input.txt | awk '{print substr($1,1,1), length($1)}'

34

cat input.txt | factor | xargs -n1 | awk 'NR>1' | xargs | awk '{for(i=1;i<=NF/5;i++){print $i}}' | awk 'BEGIN{a=1}{a=a*$1}END{print a}'

35

cat input.txt | awk '{print $1,$1}' | xargs -n1

36

cat input.txt | awk '{for(i=0;i<s$1;i++){print $1}}'

37

cat input.txt | sed 's/[^0-9]/ /g' | awk '{for(i=1;i<=NF;i++){print $i}}'

38

cat input.txt | awk '{if($1%$2==0){print "Yes"}else{print "No"}}'

39

cat input.txt | sed 's/\([a-z]\)/\1\n/g' | uniq -u | tr -d '\n'

40

cat input.txt | sed 's/\([a-z]\)/\1\n/g' | sort | uniq -c | awk 'NR>1{print $2,$1}'
41 - 50

41

cat input.txt | awk 'NR==1{a=$1+$2+$3;print $0}NR==2{x=a-$1-$3;print $1,x,$3}NR==3{print $0}'

42

cat input.txt | awk 'NR==1{a=$1+$2+$3+$4+$5}NR==3{x=a-$1-$2-$4-$5;print $1,$2,x,$4,$5}NR!=3{print $0}' | sed '3 s/\( [0-9] \)/ \1/g;3 s/\( [0-9]$\)/ \1/g'

43

cat input.txt | awk '{print $1".png",$1".jpg"}'

44

find ShellGeiData/vol.68 -type f | xargs -I@ grep entrepreneurial -rl @ | awk -F'/' '{print $NF}'

45

echo | awk '{for(i=0;i<6;i++){for(j=0;j<6;j++){if(i>=3&&j<3){printf("3")}else if(i<3&&j<3){printf("2")}else if(i<3&&j>=3){printf("1")}else if(i>=3&&j>=3){printf("4")}};printf("\n")}}'

46

cat input.txt | awk '{for(i=0;i<$1;i++){for(j=0;j<$1;j++){if(i==j){printf("1")}else{printf("0")}}printf("\n")}}'

47

cat input.txt | sed "s/ /\n/g" | grep -E "[0-9]+[.][0-9]+[.][0-9]+[.][0-9]+"

48

cat input.txt | tr -d '\n' | sed 's/\([a-z]\)/\1\n/g' | uniq -c | awk '{print $2,$1}' | tr -d ' ' | tr -d '\n'
EXERCISE
awk

1

echo | awk '{print "SHELLGEI ONLINE JUDGE"}'

2

cat input.txt | awk '{print $2}'

3

cat input.txt | awk '{print $1,$3,$2}'

4

cat input.txt | awk 'BEGIN{cnt=0}{cnt+=1}END{print cnt}'

5

echo | awk '{for(i=1;i<=10;i++){print i}}'

6

cat input.txt | awk '{if($0%2==0){print "EVEN"}else{print "ODD"}}'
cat

1

cat input.txt

2

cat -n input.txt

3

cat -e input.txt

4

cat input.txt  /ShellGeiData/vol.65/input
echo

1

echo "SHELLGEI ONLINE JUDGE"

2

echo -e "SHELLGEI
ONLINE
JUDGE"

3

echo $SHELL
find

1

find "/ShellGeiData/sd201701/" | sort

2

find "/ShellGeiData/sd201701" -type f | sort

3

find "/ShellGeiData/sd201701" -type f -name "dangerous*" | sort
grep

1

cat input.txt | grep ".jpg"

2

cat input.txt | grep -e ".jpg" -e ".png"

3

cat input.txt | grep -v ".txt"

4

cat input.txt | grep ".jpg$"
sed

1

cat input.txt | sed "s/XXX/SHELLGEI/"

2

cat input.txt | sed "s/XXX/SHELLGEI/;s/YYY/ONLINE/"

3

cat input.txt | sed "s/[0-9]//g"

4

cat input.txt | sed "/[0-9]/d"

5

cat input.txt | sed -n "/[0-9]/p"

6

cat input.txt | sed "s/\([a-z]*[0-9]\)/\1.jpg/"
sort

1

cat input.txt | sort

2

cat input.txt | sort -r

3

cat input.txt | sort -u
uniq

1

cat input.txt | sort | uniq

2

cat input.txt | sort | uniq -c
wc

1

cat input.txt | wc -l

2

cat input.txt | wc -w

3

cat input.txt | wc -m
IMAGE
1 - 10

1

convert -size 200x200 xc:#FF0000 media/output.jpg

2

convert -size 200x200 xc:#FF0000 jpg:- | convert - -stroke "#000000" -strokewidth 50 -draw "line 0,100 200,100" media/output.jpg

3

convert -size 200x200 xc:#FF0000 jpg:- | convert - -draw "circle 100,100 100,150" media/output.jpg

4

convert -size 200x200 xc:#FF0000 jpg:- | convert - -draw "rectangle 0,0 100,100" - | convert - -draw "rectangle 100,100, 200, 200" media/output.jpg

5

convert -size 200x200 xc:#FF0000 media/output.jpg; for i in {0..9};do for j in {0..9};do convert media/output.jpg -draw "rectangle $((i*20+5)),$((j*20+5)) $((i*20+15)),$((j*20+15))" media/output.jpg; done; done

問題選択

通常問題

練習問題

画像問題

選択した問題ID

NULL

問題

問題文

NULL

入力

NULL

想定出力

NULL

想定画像

実行

注意点

注意点

実行制限

実行環境

結果

正誤判定

NULL

実行結果

NULL

出力画像

実行したシェル芸

NULL

GitHub - SHELLGEI ONLINE JUDGE Discussions
© 2023 YusukeKato All rights reserved.