2つの異なるエンコーディングからUTF-8に変更されました。

2つの異なるエンコーディングからUTF-8に変更されました。
awk -F : '$1 ~ /[[:digit:]]+[[:alnum:]]*[[:digit:]]+/ && ($3>6200) {print $5" --- "$1" --- "$3;count++} END{print"\n----------\nSuma znalezionych rekordów:"count"\n----------\n"}' /etc/passwd|iconv -f ISO8859-2 -t UTF-8

だから私の問題は、端末で上記のコードを実行すると、iconvコマンドが入力全体をISO8859-2からUTF-8に変換するため、ポーランドの分音符が正しく印刷されないことです。

追加してデフォルトのエンコーディングを変更しました。LANG=pl_us.UTF-8私は.bashrcに/ etc / passwdファイルがISO8859-2でエンコードされ、印刷された行がUTF-8でエンコードされているので問題があると思いました。 .bashrcを変更せずにこの問題を解決するにはどうすればよいですか?

ベストアンサー1

UTF-8とISO8859-2を混在して変換するのではなく、パスワードファイル自体をUTF-8に変換してからプロセスを適用してください。

iconv -f ISO8859-2 -t UTF-8 </etc/passwd |
    awk -F: '
        $1 ~ /[[:digit:]]+[[:alnum:]]*[[:digit:]]+/ && ($3>6200) { printf "%s --- %s --- %s\n", $5, $1, $3; count++ }
        END { printf "\n----------\nSuma znalezionych rekordów:%d\n----------\n", count }
    '

おすすめ記事