grepコマンドで、前後の行を取得する方法
ログを調査するときなどに、grepをよく使う。 ただ、grepで検索した文字列の前後の情報も欲しい時がある。 その場合は今までgrepした後に、別途lessで見直すなどしていた。 もっと便利なやり方あるんだろうなーと思ってたら、先輩エンジニアさんから教えてもらったのでメモ。
使うコマンド
# grepと一致した行と、その後のn行を表示する (after-contextの`A`) grep -An # grepと一致した行と、その前のn行を表示する (before-contextの`B`) grep -Bn # grepと一致した行と、その前後のn行を表示する (contextの`C`) grep -Cn
例
temp.txt (検索対象のファイル)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
-A
オプション
$ grep -A5 10 temp.txt 10 11 12 13 14 15
-B
オプション
$ grep -B5 10 temp.txt 5 6 7 8 9 10
-C
オプション
$ grep -C5 10 temp.txt 5 6 7 8 9 10 11 12 13 14 15
参考
初めてのContribution
今日のもくもく
今日は、Ruby(on Rails)の勉強をした。
今年の残りは、Ruby関連の勉強を重点的にやることになりそうかなーと思ってる。
Ruby
この本やってる (まだ発売されてないけれど、先行販売してる書店があったので購入)
今は2章の途中。
文字列や数値の扱いなど基本的な部分をやってる。
ただ、「なぜRubyでは、nil
が偽になるのか」など、実装するときに役立つことも書かれてて面白い。
それと、読んでる途中で誤植かなと思うものを見つけたので、PRを送ってみた。
人のリポジトリにPRを送ったことがなかったので、どうやるんだろうなと思ったけれど、この記事がわかりやすかった。
GitHub のフォーク (fork) とプルリクエスト (pull request) の使い方 - akihiro kamijo
Rails
この本をやってる。
とりあえず、1 ~ 3章がRailsの基本ということで、ささっとやった。
今は、Modelの説明をしてくれている5章をやっている。
Active Recordが全然使いこなせない...と思うことが多いので、この章で練習したい。
ブログを書くこと
ひさしぶりにブログを書く。 以前に書いたのは179日前らしい。
もともと、文章でもっとアウトプット増やしていった方がいいんだろうなとは思っていた。
ただ、「こんなに時間かかったのに、全然書けなかった」と遅筆さに落ち込むことが多かった。
また、自分のレベルだともっとインプットに重視した方が、スキルアップに繋がると思っていた。
そのため、ブログ書かなくてもいいかーと思って放置した結果、この広告は、90日以上更新していないブログに表示しています。
もばっちり表示されていた...!
でも、今日このツイート見て、ブログ書くことにした。
常に書け。現在の自分の最前線を書け。いまを逃せば、いまの自分は書けない。だから、いま、書くしかないのです。理解も不十分、経験も少ない、世の中もわからない、こんなこと書いたら恥ずかしい、批判がたくさん来るかも。という状態で書くしかない。いまを逃せば、チャンスはない。
— 結城浩 (@hyuki) 2017年11月16日
ぐさっときた。
考えてみれば、今まではブログ書く時は、他人の視点を気にしすぎてた気がする。
もちろん読み手を意識するのは大切だし、自分の書いたエントリが誰かの役に立てばとても良いことだと思う。
でも、ツイートを読んで、自分が今やっていることや思ってることが残せるだけでも充分じゃないかと思えた。
実際に、このエントリを書く前に過去のエントリを読んだら、当時の自分が考えてたことや、こんなこともわかってなかったのか〜とか発見があって面白かった。
誰かのためじゃなく、自分のためにゆるーく書いていこうと思ったので、これからはちょこちょこ書いていくことにする。
fishをインストールしてみた
「モダンなshellといえば、fishでしょう」という声をよく聞くようになったので、入れてみた。
ちなみに、普段はzshにいろいろ手を加えて使ってる。
やったこと
インストールから、よく使いそうな便利プラグインまで紹介されててわかりやすかった。 とりあえずこのサイトと、PATHさえ通しておけば、大体良さそうな感じがした。
PATHの通し方とかを確認した。説明がわかりやすい。
* fish shellでzの結果をpecoって爆速でディレクトリ移動する - ka2n's blog
ディレクトリ移動もpecoしたいので、zコマンドをpecoでフィルタリングできるようにした。
まとめ
手を加えないでも、使いやすい感じになるのですごいなあという印象。
特に大きな不満がなければ、このままzshから乗り換えようかな。
ターミナル 単語単位でカーソル移動
方法
次の単語に移動
Option + f
前の単語に移動
Option + b
注意点
動作しない場合は、ターミナルの設定で、以下の設定になっているか確認する。
プロファイル
> キーボード
タブ > メタキーとして Optionキー を使用
にチェックを入れる。
参考
こちらは、同じことができる、他のショートカットキーが載ってる。
Macのターミナルで単語ごとにカーソル移動をする方法 - Qiita
Docker nginxのコンテナすぐに終了してしまう現象
自分でDockerfileを書いて、nginxをインストールしたコンテナを作ったが、docker run
しても、すぐに処理が終了する(docker ps
しても、見当たらない)
「なんで・・・?」ってなって調べてみた。
原因
Dockerはプロセスがフォアグラウンドで動いてないと、コンテナが終了するため。
nginxは、デフォルトでデーモンとして動くので、バックグラウンド実行になり、コンテナが終了してしまっていた。
解決策
デーモンをオフにして、フォアグラウンドで実行できるようにすればいい。
方法としてはいくらかあるみたいだが、とりあえず簡単なやつを2つ書いておく。
- nginx.confに、
daemon off;
の行を追加することで、デーモンをオフにする
# Dockerfile echo "daemon off;" >> /etc/nginx/nginx.conf
- 起動コマンドで、デーモンをオフにする方法もあるみたい。
# Dockerfile CMD ["/usr/sbin/nginx", "-g", "daemon off;"]
参考
nginxをdockerで動かす時のTips 3選 - インフラエンジニアway - Powered by HEARTBEATS