下記の課題に取り組みなさい.
※テキスト作成は nanoエディタを使って書くこと.
次のコマンド例は,パイプとリダイレクションを組み合わせたものである. In_fileに対して,この1行コマンドがどのような動作をするかを説明しなさい.
$ sort -n -r -t , -k 3 < In_file | head -n 5 > Out_file
※'$'はプロンプト記号.コマンドではない.
※sortコマンド,headコマンドは既出だが詳しくはman pageで調べなさい.
★ヒント★
実際にやってみるために,共通するデータを用意した.下のリンクファイルをダウンロードし, 結果どうなるのかを確認し,そこから「どういう動作をするのか」を考えなさい.
$ nkf calc_mark20.csv > Input_file
$ sudo apt install nkf -y▼ (Ubuntu) $ brew install nkf▼ (MacOS)
まず,教材テキストを入手する.ここではman pageを保存する.
★ls コマンドのman pageをリダイレクトし,manpage.txt に保存しなさい.(当然manコマンドを使う)
この"manpage.txt"に対して,次の手順(1)~(5)すべての操作を,この順の通り, 適切なコマンド・フィルタ・パイプを組み合わせ, 1行のコマンドとして 書きなさい.
ただし,手順2.,3.はオプションとする(飛ばしてもよい). つまり手順4.は1.または2.または3.の後に続く.
※コマンドと出力結果の両方を書くこと.
(オプション1): すでに学んだように,Unixではパイプ機能を使って, コマンドによる標準出力をパイプでつなげて,次々と処理を連続させることができる.
しかし,ある程度複雑で長い処理の場合,途中経過を確認したい場合がある. この時,パイプを通して標準入力に入ったデータをコピーし,標準出力とファイルに分岐させ, 標準出力はそのままパイプに流すことができると便利である(一種のモニタリング). この機能をもつツールが'tee'コマンドである. ( 'tee'という名はアルファベットの'T',つまり「T字型に分岐する」という意味からきている)
(オプション2):
これは検索文字表記の応用問題.例えば,
の行は検索にヒットするが,
68: --group-directories-first
の行はヒットしないように除外したい.
11: のいずれも指定されず,……
※Yet Another: さらにもうひとつの,という意味
上で作成したmanpage.txtを対象とした, 次の1行コマンドの結果を示しなさい. (複数行に分かれて見えるが,1行で記述されているとする)
さらに,パイプで繋げられている各コマンド(8つあるはず)はどんな作業をするのか,
文章で簡潔に解説しなさい.
cat manpage.txt | awk 'BEGIN{RS="";FS="\n"}{print $1 $2 $3}' | grep -e ' -' | sed -e 's/^ \+//g' -e 's/ \+/ /g' -e 's/, /,/' -e 's/ /:/' -e 's/ \+//g' -e 's/。.*//g' | grep -v '^\--' | awk 'BEGIN{FS=":"}{printf "%-29s | %s%s\n",$1,$2,$3}' | sort -f
上記の質問の回答をすべてレポートとして作成し,レポートディレクトリ( Report )に置くとともに, 電子メールでレポート提出しなさい.
<レポート用ファイルについて>
上記課題の回答をひとつのファイルにまとめ, そのファイルをレポートディレクトリに保存する.
<電子メールについて>
[ページトップへ]