awkで素敵な置換ライフ

[ファイル仕様]
・データが入ってる
・区切り文字がタブ
・テキストファイル

[やりたい事]
ファイル中に下記のようなデータが含まれる 場合、""を\Nに置換したい。
※ \NはmysqlのLoad File時にNULLを表す


001 \t "" \t 100

[コード]

 
cat ${filename} |
  awk 
    'BEGIN { FS="\t"; OFS="\t" } 
    { for (i = 1; i <= NF; ++i) 
        if ($i == "" || $i == "0") $i="\\N" ; print $0
    }'
  }'




[コード解説]
FS="\t"     →    入力時の区切り文字をタブに
OFS="\t"   →    出力時の区切り文字をタブに
NF             →    現在レコードのフィールド数
$1,...,$NF     →    第1フィールド,...,第NFフィールド
$0             →    現在の入力レコード(今回はcatで1行ずつ出力しているので1行すべて)




[結果]

001 \t "" \t 100 → 001 \t \N \t 100

パチパチ

[参考]
AWKのまとめ

awkもっとちゃんと使えるようになりたい!

Posted in , , . Bookmark the permalink. RSS feed for this post.

Leave a Reply

Search

Swedish Greys - a WordPress theme from Nordic Themepark. Converted by LiteThemes.com.