気軽に楽しくプログラムと遊ぶ

自分が興味があってためになるかもって思う情報を提供しています。

grepで検索した行の前後も表示する方法

grepで対象文字列が存在する行を表示

$ grep -n test1 test.conf
4:      test1 ←-nオプションを付けたので、4行目に該当する文字列があることが分かる

grepで対象文字列が存在する前後の行を表示

logの調査をする際にgrep実行前後の行も確認したい場合があるその場合は以下のようなコマンドが使える。

$ grep -3 -n test1 test.conf
1-[global]
2-      test
3-      test
4:      test1 ←-3オプションによって、前後各3行も表示される
5-      test
6-      test
7-      test

grepで対象文字列が存在する前、または後の行を表示

また、該当する行の後の行だけを表示したり、前の行だけを表示することもできる。後の行を表示するには-Aオプション、前の行を表示するには-Bオプションを使用し、併せて表示したい行数を指定する。

$ grep -A 3 -n test1 test.conf ←該当する行の後の3行を表示する
4:      test1 ←-3オプションによって、前後各3行も表示される
5-      test
6-      test
6-      test
$ grep -B 3 -n test1 test.conf ←該当する行の前の3行を表示する
1-[global]
2-      test
3-      test
4:      test1 ←-3オプションによって、前後各3行も表示される

参考URL

grepで該当する行の前後も一緒に表示するには

z.shをbrewを使わず導入する

z.shとは?

z.shって何って人はこちらを参照してください
z.shでよく行くディレクトリに手軽に移動する - Qiita

簡単に説明すると、ディレクトリパス移動が楽になるシェルで
覚えている一部の文字列を入力してtabを押すと、今までの移動履歴から入力文字列を含んだ移動先パス一覧を表示してくれるというもの。

cd、cdでの移動から開放されて、手放せなくなります。

mac以外の環境でも使いたかったので、こちらに導入方法を記載した。

インストール方法

下記よりz.shをダウンロードし、任意のシェルを配置している場所に置く。
https://github.com/rupa/z

z.shを読み込む

source z/z.sh

Eclipseの導入方法

Eclipseの導入において、よく設定する内容を記載します。

下記のEclipse IDE for Java EE Developersをインストール
https://eclipse.org/downloads/

日本語化

エディタでの文字化け対策

ファイルのエンコードUTF-8に変更します。

テキスト内容  

  • メニューのウィンドウ(W)>設定(P)を選択
  • 設定ダイアログの一般>コンテンツ・タイプ
  • テキストを選択し、デフォルト・エンコードUTF-8に更新

その他ファイル

  • メニューのウィンドウ(W)>設定(P)を選択
  • 設定ダイアログの一般>ワークスペース  
  • テキスト・ファイルのエンコードでその他のUTF-8を選択し適用

Vagrant Rails4.2にホストOSから繋ぐ方法

Vagrant+VirtualBox+Ruby+Railsによる仮想環境へのRails環境構築は下記を参照することで実現できました。
【Windows7】VirtualBox + Vagrant + Ruby + Rails4 開発環境の構築【初心者必見】 - Qiita

ただ、仮想環境で実行したrails serverへホストOSへ繋げませんでした。

f:id:tamata78:20160131164114p:plain

下記の2つの設定を行ったところ、アクセスできるようになりました。

仮想環境にホストOSのブラウザからIP指定でアクセスできるようにする設定

Vagrantfileに記載するネットワーク設定をpublic_networkに変更。コメントアウトされている箇所を コメントアウト解除する。

Vagrantfile

config.vm.network = "public_network"

rails serverをオプション付きで起動する

$ rails s -b 0.0.0.0
=> Booting WEBrick
=> Rails 4.2.5.1 application starting in development on http://0.0.0.0:3000
=> Run `rails server -h` for more startup options
=> Ctrl-C to shutdown server
[2016-01-31 07:09:07] INFO  WEBrick 1.3.1
[2016-01-31 07:09:07] INFO  ruby 2.3.0 (2015-12-25) [x86_64-linux]
[2016-01-31 07:09:07] INFO  WEBrick::HTTPServer#start: pid=2766 port=3000

f:id:tamata78:20160131164029p:plain

アクセスできた。。

オプション付きで起動しないと下記のRails4.2の変更が行われた影響でアクセスできなくなるとのこと。

以下、Ruby on Rails 4.2 リリースノートより引用

3.3 rails serverのデフォルトホスト Rackの変更 により、rails serverコマンドを実行した際のデフォルトのホストが0.0.0.0からlocalhostに変更されました。この変更は標準的なローカルでの開発ワークフローにほとんど影響を与えないはずです。http://127.0.0.1:3000 および http://localhost:3000 の動作はどちらも以前と同じであるからです。

ただし、今回の変更により、別のPCからRailsサーバーへのアクセスは以前と同じようにはできなくなります。たとえば、development環境が仮想マシン上にあり、ホストマシンからこのdevelopment環境にアクセスする場合などがこれに該当します。 このような場合、サーバーを起動する際にrails server -b 0.0.0.0とすることで、以前と同じ動作を再現できます。

(追加で設定しておくと便利) interface を手動選択しなくていい方法

Vagrant に public interface を追加した場合、vagrant up時に interface を手動選択する必要が出てきます。

bridge の指定をすることで回避可能

config.vm.network :public_network, bridge: 'en0: Wi-Fi (AirPort)'

ブリッジに使いたい interface は、ホストによって変更する場合は下記を参考にしてください。
環境変数で Vagrant の bridge を指定できるようにする - Qiita

参考URL

Vagrantで作成した仮想環境のRails4.2に繋がらない!! - Qiita
Rails 4.2 - 2014/12 - Rails ガイド

pry上でのRuby APIの使い方

オブジェクトのメソッドを調べる方法

object_name内に「url」文字列を含むメソッドが存在するかを調べる。

[1] pry(Hoge)>object_name.methods.grep(/url/)

DBデータ取得後にパターンマッチする

Gruoupsテーブル内のidが123のレーコード内のname項目で数値を含むものを表示する。

[1] pry(Hoge)>Groups.where(id: 123).pluck(:name).select { |w| w.match /\d/ }

1レコード取得かつ1項目取得する

Userテーブル内のname項目を抽出する。

[1] pry(Hoge)>user.map(&:name)