awk:コードを書かずにヘッダをバイパスする

awk:コードを書かずにヘッダをバイパスする

すべてがヘッダー付きのCSVファイルを使用し、私の目的のためにヘッダーも渡す必要があるため、頻繁に入力する式です。

cat foo.csv | awk -F',' 'BEGIN{start=0}{if(start==0){start = 1; print $0; next;} ...}'

ヘッダーが通過できるようにし、BASHスクリプトラッパーを作成したり(そして私の頭の中でドラッグしたり)繰り返し作成するのを防ぐには、いくつかの簡単な設定が必要です。

そんな設定がありますか?

答え1

awkこのCSVファイルに対してテキスト処理を続けたいとします。その場合は、「行番号」に次の条件を追加することをお勧めします。

awk -F',' 'NR==1{print} NR>1{ your code here }' foo.csv

ここでは「レコード番号」の組み込み変数NRで、通常は行番号(awk複数のファイルを処理する場合、これは「処理された行の総数」であり、ファイルあたりの行数はFNR)。その部分を省略して印刷ヘッダーを簡単に省略することもできますNR==1{...}

print作戦に使うようになれば「ゴルフ」ができます。

awk -F',' 'NR>1{ your code here }1' foo.csv

1「印刷結果行()」を示します$0

返品:

  • catファイルにパイプする必要はなく、awkコマンドライン引数として提供するだけです。
  • start=0初期化されていない変数のデフォルト値は「0」なので、実際にはセクションでその文を使用する必要はありません。BEGIN

関連情報