計算機が生成したテキストファイルからデータを抽出するとき、「この行からあの行まで」と範囲を限定したいことがよくある。エディタに読み込める範囲なら手動で取り出すけど、さすがに 1GB 近いファイルを読み込むのはちょっと無謀。こんなときこそフィルタコマンドの出番だが、ついつい手慣れた Perl とか Ruby とかで書こうとするものだから、単純な操作だとかえって手間がかかったりする。sed とか awk とも仲良くなっておかんとな。
% sed -n '/pattern1/,/pattern2/p' # pattern1 を含む行から pattern2 を含む行まで出力 % sed -n '/pattern1/,$p' # pattern1 を含む行から最後まで出力 % sed '/pattern1/q' # pattern1 を含む行まで出力
タグ:ソフトウェア