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