AWK

AWKコマンド練習問題:4 [CSVファイルをFPATでいい感じに分割]

AWKシリーズ第4回目、今回はFPATを使ったテクニックです

以下の様な行をカンマをフィールド区切り文字で出力してみます。

 

そう、なんか違う・・

"Tokyo, Shinjuku"まで出してほしい。。

そんなときはFPATを使えば解決です

FPAT

フィールドパターンの略でしょ(適当

FPATを使えば一行のうち、どれをフィールド(列)として認識するかを定義できるぞ

こんなふうに

正規表現でフィールドと認識させる文字列パターンを定義するだけ

上の例では、カンマ以外の文字列と「"」ダブルクオーテーションで囲まれた部分がフィールドになるようにしているので、ちゃんと"Tokyo, Shinjuku"て出ている

それでは問題

問題

sample.csv

  1. 4列目と5列目を出力してください
  2. 5列目に"Twitter"を含む行のみ出力してください
  3. 全体をハイフン区切りで"sample.hsv"という形式で書き込んでください

 

 

 

 

 

 

 

 

 

行けましたかね?それでは!

4列目と5列目を出力してください

上の例のほぼコピペでいけるね

5列目に"Twitter"を含む行のみ出力してください

前回のmatchと組み合わせたら可能

全体をハイフン区切りで"sample.hsv"という形式で書き込んでください

OFSで出力する区切り文字をハイフンにして、$1=$1でフィールドの再構築を行い、その結果をリダイレクトでsample.hsvとして書き込めばOK

 

まとめ

  • FPATを使うことでフィールドを正規表現で定義されたものに指定できる
  • FPATで区切られたフィールドは別の文字列操作関数で参照できる
「シェル芸」に効く!AWK処方箋
コマンドであり軽量言語(LL)の元祖でもあって、
シェルでのテキストデータ処理には便利で手放せない
「AWK」の魅力と書き方、シェルコマンドと組み合わせた
テクニック(シェル芸)を解説!

-AWK

© 2023 Shiro's secret base