ソースファイルの各行の先頭には特殊文字があります。ファイルは二重スペースで区切られます。
サンプルデータファイル:
âNAME ABC
âAGE 21
âADDRESS XYZ street ABC city
âCONTACT 13244235
âDOJ 20181212
â
各行の最初の特殊文字を削除し、ファイルを;
(セミコロン)区切りファイルに変換したいと思います。
私が書いた後、コードはUATではうまくいきますが、PRODではうまくいきません。
awk '{ print substr($0,1) }' FILE1.txt | sed 's/ /;/' > FILE2.txt
UAT出力(予想される予測出力):
NAME;ABC
AGE;21
ADDRESS;XYZ street ABC city
CONTACT;13244235
DOJ;20181212
製品出力:
âNAME;ABC
âAGE;21
âADDRESS;XYZ street ABC city
âCONTACT;13244235
âDOJ;20181212
同じコードはUATでうまく機能します。つまり、最初の文字を削除してファイルをセミコロンで区切られたファイルに;
変換しますが、PRODは最初の特殊文字を削除せずにファイルをセミコロンで区切られたファイルに変換します。
出力locale
:
locale
LANG=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=
誰でもこの問題を解決するのに役立ちますか?
ベストアンサー1
あなたの問題が文字エンコーディングに関連している可能性があると思います。FILE1.txt
両方の環境で表示してみてください。
hexdump -C FILE1.txt
E-asciiまたはUTF-8でエンコードできます(参照:https://en.wikipedia.org/wiki/%C3%82#Character_mappings)
問題を解決するには、両方のエンコーディングを一致させてください。
â in UTF-8 â in other encoding
| |
v v
sed 's/\xc3\xa2//' FILE1.txt | sed 's/\xE2//' > FILE2.txt
別の回避策は、ファイルを処理する前に既知のエンコーディングに変換することです。
PRODエンコーディングをテストしないと危険です。