読者です 読者をやめる 読者になる 読者になる

黒縁眼鏡は海を飛ぶ

IT中心にそこはかとなく

シェル芸勉強会という凄いものがあるらしい(3日目)

シェル芸おもしろいと思ってたけど、コマンドの勉強になってめっちゃ有意

知らないコマンドを知る、知ってるコマンドでもオプションがいっぱいある、実はこんな使い方もできるなど、たくさんのことが学べて有意義だと思います。
参加したことないですけど、過去スライド凄く勉強になるので勉強します。LPICの勉強どうしよう←

シェル芸勉強会第2回

今回からは第2回の問題を解いていきたいと思います。
正直コマンド知らなさすぎて手痛い目にあったりあわなかったりな感じですが、コツコツ頑張りましょう。

  • 第2回 問題1
    • 文字化けしたファイルのみを削除する。

まずこの文字化けしたファイルを作成するところで使われているnkfコマンドですが、

nkf - ネットワーク用漢字コード変換フィルタ  

-s   Shift_JIS コードを出力する。
-w   Unicode を出力する。

入力された文字の文字コードを変換してくれるみたいです。
文字化けしたファイル、ab,DEFとファイルを作ってあげたら準備完了。

文字化けしたファイルを作成する時にも使用していましたが、xargsコマンドで標準入力を受け取って続くコマンドを実行できます。勿論初めて知りました。

  • 第2回 問題2
    • バラバラに並んでいる数字を全て足してみましょう

下の感じ。

1
2 3 4
5 6
7 8 9 10

まずは一列に並び替えて、スペースを+に置換してexprコマンドで計算させています。

は、初めて自力で解けたかもしれない…もっともっとスマートな解き方がいっぱいありそうです。
第1回でインストールしたTukubaiのコマンドでそういうものがあったような…

  • 第2回 問題3
    • 下のようなファイルで、a,bそれぞれで一番大きい数字を選ぶ
a 12
a 13
b 13
a 432
b 111
b 43

できそうでできない感じでモヤる。

1.一撃でa,bの最大値を引っこ抜くのは私には無理なので、ループで回してa→bそれぞれ順番に完結させたい。(for i in a b
2.とりあえず第二フィールドでsortする。(sort -k) 2.最大値取り出す。(tail

上記のような方針で行くとできた!

仕事終わりなのに頭の体操しているみたいでちょっと疲れました…