シェルを使ったデータ処理
前回、前々回に引き続き、シェルを使った操作を練習しましょう。今回はsed
、awk
、grep
、less
などを使い、データの確認を行います。
-
以前の演習で
home
に作成したinfovis
フォルダに移動してください。 -
data
という名前のフォルダを作成し、作成したフォルダに移動してください。 -
seq -f "Line %g" 10 > lines.txt
を実行し、練習で使うダミーファイルを作成してください。
Hint
seq
コマンドについても調べてみてください。
head
、sed
、またはawk
を使ってlines.txt
の先頭3行を出力してください。
Hint
cat lines.txt | head -n 3 # or cat lines.txt | sed -n '1,3p' # or cat lines.txt | awk 'NR<=3'
それぞれのコマンドについて調べてみましょう。
lines.txt
の最後の3行を出力してください。
Hint
tail
を使ってみましょう。
lines.txt
の奇数行を出力してください。
Hint
cat lines.txt | awk 'NR%2'
lines.txt
の偶数行を出力してください。
Answer
cat lines.txt | awk '(NR+1)%2'
- Project GutenbergからAlice’s Adventures in Wonderland (https://www.gutenberg.org/cache/epub/11/pg11.txt) をダウンロードして、
alice.txt
として保存します。
Hint
curl https://www.gutenberg.org/cache/epub/11/pg11.txt > alice.txt
wc
で行数、単語数、文字数を調べてみましょう。どの値がどれに対応するでしょうか?
Hint
wc alice.txt
less
を使ってalice.txt
の中身を確認してみましょう。k
とj
で上下移動、q
で退出することができます。
Hint
less alice.txt
grep
を使い、alice.txt
からすべての章見出しを抜き出してみましょう。
Hint
grep -i chapter alice.txt
- 今度は
grep
で正規表現を使い、先頭が「The」になっている章見出しだけを抜き出してください。
Hint
grep -E 'CHAPTER (.*)The' alice.txt
「正規表現」についても調べてみましょう。
grep
を使い、alice.txt
から2文字以上の単語をすべて抽出し、alice-words.txt
として保存しましょう。
Hint
grep -oE '\w{2,}' alice.txt
Answer
grep -oE '\w{2,}' alice.txt > alice-words.txt
- 現在の作業ディレクトリをGitリポジトリにしてください(すでにGitリポジトリ内で作業している人は新しく作成しなくても問題ありません)。
Hint
git init
-
このウェブサイトを参照し、GitHubにリモートリポジトリを作成しましょう。「ローカルのリポジトリをGitHubに登録」まで行ってください。
- 「SSH公開鍵の作成」で「id_rsa」ではなく「id_ed25519」が表示されても問題ありません。
- 同じページのここに少し詳しく書かれています。
- 『暗号解読』(サイモン・シン)も面白い。
-
ローカルリポジトリをGitHubリポジトリにプッシュし、先程作成した
alice-words.txt
がGitHubに表示されているスクリーンショットをコメントシートに提出してください。