Edited at

素人の言語処理100本ノック:10

More than 1 year has passed since last update.

言語処理100本ノック 2015の挑戦記録です。環境はUbuntu 16.04 LTS + Python 3.5.2 :: Anaconda 4.1.1 (64-bit)です。過去のノックの一覧はこちらからどうぞ。


第2章: UNIXコマンドの基礎


hightemp.txtは,日本の最高気温の記録を「都道府県」「地点」「℃」「日」のタブ区切り形式で格納したファイルである.以下の処理を行うプログラムを作成し,hightemp.txtを入力ファイルとして実行せよ.さらに,同様の処理をUNIXコマンドでも実行し,プログラムの実行結果を確認せよ.



まずmanの日本語化

この章からはUNIXコマンドの勉強になります。

UNIXコマンドの調べ方がよく分からず職場の同僚に聞いたところ、「まずはmanで調べるクセをつけなさい」とアドバイスをもらい、さっそく端末でman wcとやってみました。

Kobito.W1nTgc.png

やはり英語でしたか><

でも、ありがたいことに日本語化されたパッケージがありました。

sudo apt-get install manpages-ja

でインストールできます。有志のみなさん、感謝です。

これで無事、日本語になりました。

Kobito.z0ZAzE.png

さっそく問題に進みます。


10.行数のカウント


行数をカウントせよ.確認にはwcコマンドを用いよ.


出来上がったコード:


main.py

# coding: utf-8


fname = 'hightemp.txt'
count = 0
with open(fname) as data_file:
for line in data_file:
count += 1
print(count)

実行結果:


端末

24


UNIXコマンドでの確認は、シェルスクリプトの勉強も兼ねてスクリプトでやってみます。


test.sh

#!/bin/sh

wc --line hightemp.txt


実行結果:


端末

24 hightemp.txt


無事、同じ行数になりました。


シェルスクリプト実行時の注意(Windowsバッチファイルとの違い)

シェルスクリプトを直接実行する際は、スクリプトファイルに実行権限を付けておく必要があります。chmod +x test.shなどで権限を付与してください。またUNIXは、パスが通っていないとカレントの実行ファイルを見つけてくれません。実行時は./test.shといった感じで場所の指定が必要です。

UNIXとWindowsを行ったり来たりしてると、いろいろ混乱しますね。慣れの問題なのでしょうけど、時々Windowsでlsって打っちゃったりとかしてます^^;

 

11本目のノックは以上です。誤りなどありましたら、ご指摘いただけますと幸いです。