シェルを使ったデータ処理
前回、前々回に引き続き、シェルを使った操作を練習しましょう。今回は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に表示されているスクリーンショットをコメントシートに提出してください。