UGA Boxxx

つぶやきの延長のつもりで、知ったこと思ったこと書いてます

【Linuxコマンド】メモ:特定の行の範囲を切り出す

毎回どうやるのか調べてるのでメモ

やりかたは2つ

sedを使う

$ cat ファイル名 | sed -n '開始行,終了行p'

②headとtailを使う

$ cat ファイル名 | head -n 終了行 | tail -n 開始行

どちらが早いのだろうと調べた

実際やりたかった450MBあるファイルに対して、1000行目から10000行目を切り出す
macなのでbrewcoreutilをインストールして、gdateを使う

sedを使う

$ start_time=`gdate +%s.%3N`; cat target.csv | sed -n '1000,10000p'; end_time=`gdate +%s.%3N`; echo $((end_time - start_time));
...
1.4509999752044678

②headとtailを使う

$ start_time=`gdate +%s.%3N`; cat target.csv | head -n 10000 | tail -n 1000; end_time=`gdate +%s.%3N`; echo $((end_time - start_time));
...
0.63299989700317383

予想に反して②だった