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 }
'