標準入出力・リダイレクション・パイプ vol.2

リダイレクトを使ったファイル生成

ヒアドキュメント

  • 前回少し見た ヒアドキュメント というものを使ってみたく、以下のようにしてファイル生成してみた
    • Debian - Wikipedia から Debian の各バージョンのコード名(トイ・ストーリーの出演キャラクター)をコピペ
      • (トイ・ストーリーは少なくとも 50 回以上は観てます!!!)
$ cat <<EOF > toy_story.txt
heredoc> buzz
rex
bo
hamm
slink
potato
woody
sarge
etch
lenny
squeeze
wheezy
jessie
stretch
buster
bullseye
heredoc> EOF
  • ファイル生成できた!
$ cat toy_story.txt 
buzz
rex
bo
hamm
slink
potato
woody
sarge
etch
lenny
squeeze
wheezy
jessie
stretch
buster
bullseye

昇順ソート

$ cat toy_story.txt | sort -s > toy_story-sort_s.txt
$ cat toy_story-sort_s.txt
bo
bullseye
buster
buzz
etch
hamm
jessie
lenny
potato
rex
sarge
slink
squeeze
stretch
wheezy
woody

降順ソート -r

$ cat toy_story.txt | sort -r > toy_story-sort_r.txt
$ cat toy_story-sort_r.txt 
woody
wheezy
stretch
squeeze
slink
sarge
rex
potato
lenny
jessie
hamm
etch
buzz
buster
bullseye
bo

grep / 正規表現

$ cat toy_story.txt | grep ^b > toy_story-grep.txt
$ cat toy_story-grep.txt 
buzz
bo
buster
bullseye

uniq

  • 重複削除
  • uniq コマンドは隣り合った行しか比較しないので、先に sort コマンドを使って並べ替えるのが一般的
$ echo buzz >> toy_story-grep.txt 
$ cat toy_story-grep.txt 
buzz
bo
buster
bullseye
buzz

$ uniq toy_story-grep.txt # buzz は隣り合っていないため重複は取り除かれない
buzz
bo
buster
bullseye
buzz

$ sort toy_story-grep.txt | uniq
bo
bullseye
buster
buzz
$ echo bo >> toy_story-grep.txt 
$ cat toy_story-grep.txt 
buzz
bo
buster
bullseye
buzz
bo

$ cat toy_story-grep.txt | sort -u
bo
bullseye
buster
buzz

パイプ

  • 標準入出力で得られた結果を次のコマンドに渡す
  • パイプはいくつでも連結できる
$ echo buzz >> toy_story.txt 
$ cat toy_story.txt 
buzz
rex
bo
hamm
slink
potato
woody
sarge
etch
lenny
squeeze
wheezy
jessie
stretch
buster
bullseye
buzz

$ cat toy_story.txt | sort -r | uniq | grep ^b
buzz
buster
bullseye
bo

/dev/null

$ echo goodbye > /dev/null 

&>/dev/null と >/dev/null