【bash】ファイルから中身を抜き出すコマンド:grep, head, tail
今回はLinuxコマンドのお勉強です。
研究ではtailをよく使ったかな?
早速始めます
まずは以下のようなファイルを用意しました。
$ ls testfile.dat $ cat testfile.dat 1.USA 2.Japan 3.Russia 4.China 5.UK 6.Italy 7. 8. 9. 10. 11.
中身に深い意味なんてありませんよ。
grep
grepはあるファイルから特定の文字列を含む行を抜き出すコマンド。
$ grep 2 testfile.dat 2.Japan $ grep USA testfile.dat 1.USA
ちなみに$ grep 0 testfile.dat
のように存在しないものを引数にしても何も返ってきません。
オプション
- -i
引数の大文字小文字の区別なしに抜き出すことができる。
$ grep u testfile.dat 3.Russia $ grep U testfile.dat 1.USA 5.UK $ grep -i u testfile.dat 1.USA 3.Russia 5.UK
- -n
引数と一致し抜き出した行に行数をつけて出力する。
$ grep -ni u testfile.dat 1:1.USA 3:3.Russia 5:5.UK
- -v
引数のパターンと一致したものがない行を抜き出す。
$ grep -v u testfile.dat 1.USA 2.Japan 4.China 5.UK 6.Italy 7. 8. 9. 10. 11. 12. $ grep -iv u testfile.dat # iオプションも併用 2.Japan 4.China 6.Italy 7. 8. 9. 10. 11.
- -c
$ grep -ci u testfile.dat 3
head
headはあるファイルの先頭から指定した行数を抜き出すコマンド。
-数字
で行数を指定する。
指定しない場合には10行抜き出される。
$ head -2 testfile.dat 1.USA 2.Japan $ head testfile.dat 1.USA 2.Japan 3.Russia 4.China 5.UK 6.Italy 7. 8. 9. 10.
オプション
- -c
ファイルの中身の先頭から指定する数だけ文字を抜き出す。
$ head -c 10 testfile.dat 1.USA 2.Ja
tail
tailはあるファイルの末尾から指定した行数を抜き出すコマンド。
$ tail testfile.dat 2.Japan 3.Russia 4.China 5.UK 6.Italy 7. 8. 9. 10. 11.
オプション
- -f
ファイルの末尾をリアルタイムで監視&更新。
僕の経験ではこれはかなり知ってるとお得
例えば外部のセンサーで取得しているデータファイルの中身をリアルタイムで確認できる。
今回は以上です。