こんにちは、さるまりんです。
こんな二つのファイルがあります。
$ cat june30
# June 30th
# Friday
Unknown,25
Shiitake,13
Apple,3
Orange,10
Cucumber,8
Avocado,4
Enoki,7
Okra,33
$ cat july01
# July 1st
# Saturday
Unknown,15
Cauliflower,2
Apple,3
Orange,10
Enoki,7
Pumpkin,1
Cabbage,5
Guava,1
Onion,15
いずれも野菜・果物の名前と数字をもつファイルです。
最初の2行が日付と曜日をもつヘッダ、その次の行が空行です。
その後に名前,数字の書式でデータを持っています。
これらのファイルからダブりなしで名前だけをアルファベット順にとりたいです。
またUnknown(不明なもの)はいらないです。
どうしましょう?
次のように取り出しました。
1. 二つのファイルよりヘッダ部分を取ったものを繋ぐ
2. カンマ区切りで1つ目のテキストを抽出し、それらを並べ替え重複なしにします。
3. いらないものを削除します。
こんなコマンドで実施しました。
$ tail -n +4 june30 > text1; tail -n +4 july01 >> text1
cat text1 | cut -d "," -f 1 | sort | uniq > text2
sed -e '/Unknown/d' text2 > text3
cat text3
Apple
Avocado
Cabbage
Cauliflower
Cucumber
Enoki
Guava
Okra
Onion
Orange
Pumpkin
Shiitake
tail -n +4 ファイル
で最初の3行をとばし、4行目からにしています。
cut -d ","
でカンマ区切り-f 1
で一つ目の文字列をとり、
sort | uniq
で並べ替えて重複行を削除、
sed -e '/文字列/d' ファイル
で文字列の行を削除し、
結果ファイルを出力しています。
うまく組み合わせると用意されたコマンドだけでやりたいことができました。
頭の体操みたいです。
いろんなことを柔軟に考えられるように頑張ります。
読んでくださってありがとうございました。
それではまた!