お世話になります。
初めて投稿するので、書き方が間違っていたり表現が不順分かも知れませんが、よろしくお願い致します。
###前提・実現したいこと
Linux環境(UTF-8)で、日本語と半角英数字の混在したSQLスプールファイルから、固定長で文字列を抽出したい。
###発生している問題・エラーメッセージ
日本語がUTF-8では3バイトで扱われるのか(?)、スプールファイルの行によってバイト数が違うため、cutやfoldでは固定長で切り出せず、awkのprintfで整形しても若干ずれてしまうようです。
###該当のソースコード
(スプールファイル:sample.spool)※テキストエディタに貼って頂くと固定長と分かります
I173400 材料消費連携 高機能 B1A SR 材料消費連携 17/03/26 01:37:28 01734 08219
I124800 AB:取引先転送 AB:SYSTEM B4A MREAL AB:取引先転送 受信 17/03/26 18:11:18 01248 03916
I125400 AB:工場転送 AB:SYSTEM B4A MREAL AB:工場転送 送信 17/03/26 18:11:18 01254 03928
###試したこと
cut -b -120 sample.spool
I173400 材料消費連携 高機能 B
I124800 AB:取引先転送 AB:SYSTEM B4A
I125400 AB:工場転送 AB:SYSTEM B4A M
fold -b120 sample.spool|grep ^I
I173400 材料消費連携 高機能 B
I124800 AB:
I125400 AB:工場転送
LANG=C cut -b -120 sample.spool
I173400 材料消費連携 高機能 B
I124800 AB:取引先転送 AB:SYSTEM B4A
I125400 AB:工場転送 AB:SYSTEM B4A M
LANG=C fold -b120 sample.spool|grep ^I
I173400 材料消費連携 高機能 B
I124800 AB:取引先転送 AB:SYSTEM B4A
I125400 AB:工場転送 AB:SYSTEM B4A M
LANG=C awk '{printf("%7s %-50s %-50s %3s\n",$1,$2,$3,$4)}' sample.spool
I173400 材料消費連携 高機能 B1A
I124800 AB:取引先転送 AB:SYSTEM B4A
I125400 AB:工場転送 AB:SYSTEM B4A
お手数をお掛けしますが、ご教授いただければ幸いです。
よろしくお願い致します。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/03/27 15:22