てきとーになんか書きます

過去の記事はね,汚点.

Perlのワンライナーで複数行を複数抽出したかった

はじめに

CSVファイルがあってn行目とo~p行目(n<o<p)を抽出したかった.
本記事タイトルと若干違うがタイトルには本記事のタイトルのようにする方が表現が楽だった.

解決策

if($.==n||(o..p)){print$_}

# =>
if($. == n || (o..p)) {
  print $_;
}

でいけた.つまりファイル名をfile.csvとして

$ perl -nle 'if($.==n||(o..p)){print$_}' file.csv

でOKだった.

ワンライナーっぽくするなら

$ perl -nle 'print if(n..n)||(o..p)' file.csv

の方がそれっぽい気はする.