■ はじめに
業務で制御文字SOH(確かHiveのデフォルト区切り文字?)で 区切られたファイルを扱うことになった。 そのままだと扱いづらいので、そのことに関する完全自分用のメモ。 加工したファイルを最終的にSnowflake のステージ経由で表示したいのが目的。
Snowflake ~ 基本編 / ステージ ~
https://dk521123.hatenablog.com/entry/2022/09/01/220643
=> そんなことしなくても「RECORD_DELIMITER = '\x01'」でみれた???
https://docs.snowflake.com/ja/sql-reference/sql/create-stage#type-csv
目次
【0】SOH 【1】ファイル出力 【2】置換 【3】おまけ:文字列挿入
【0】SOH
* Start Of Heading(ヘッダ開始)
http://ash.jp/code/ctrltbl.htm
* コード:\x01
【1】ファイル出力
* echo -e で「\x01」を指定する
1)サンプル
echo -e "aa1\x01bb1\naa2\x01bb2\n" > test.txt
【2】置換
* sedコマンドを使う
sedコマンド
https://dk521123.hatenablog.com/entry/2019/11/23/101625
テキスト加工 ~ sed / awk ~
https://dk521123.hatenablog.com/entry/2019/11/22/223043
シェル ~ 文字列置換 ~
https://dk521123.hatenablog.com/entry/2023/10/25/000000
1)サンプル
# SOH to TAB sed -i 's/\x01/\t/g' test.txt
別ファイルに出力
sed -e 's/\x01/\t/g' test.txt > output.txt
【3】おまけ:文字列挿入
* これも sedコマンドでできる
1)サンプル
# 1行目に「id」「name」をSOH区切りで挿入 sed -e "1i id\x01name" test.txt > output2.txt
参考文献
https://qiita.com/bamchoh/items/fc6e6b00606bdf81fd60
関連記事
sedコマンド
https://dk521123.hatenablog.com/entry/2019/11/23/101625
テキスト加工 ~ sed / awk ~
https://dk521123.hatenablog.com/entry/2019/11/22/223043
シェル ~ 文字列置換 ~
https://dk521123.hatenablog.com/entry/2023/10/25/000000
シェルでのファイルに関する処理あれこれ
https://dk521123.hatenablog.com/entry/2020/09/28/000000
ファイル内容を操作するコマンド
https://dk521123.hatenablog.com/entry/2023/07/26/000000
大きいファイルを扱う際のコマンド
https://dk521123.hatenablog.com/entry/2020/06/12/000000
ファイルの内容を表示するコマンド
https://dk521123.hatenablog.com/entry/2016/08/08/235934
Linux ~ パフォーマンスに関わるコマンド ~
https://dk521123.hatenablog.com/entry/2015/02/21/112554