다음 코드 스 니펫에서 무슨 일이 일어나고 있습니까? 예상 출력을 얻지 못했습니다.
나는 그것이 버그라고 생각할 것이지만, 두 가지 다른 프로그램 (uniq 및 sort)에 대해 발생하므로, 그것이 관련이 있다고 생각합니다 ... 글쎄, 나는 무엇을 모른다.
처음 3 개 중 4 개 예제는 작동하지만 4 번째는 실패합니다!.
모든 캐릭터에 대해 동일한 동작을 기대합니다.
즉. (입력의 3 개 라인에서) 2 개 라인을 인쇄 ...하지만 4 번째 경우에, 난 단지 (모두 1 개 라인 얻을 sort -u
과 uniq
); 두 개의 동일한 린이 사라집니다!
컴팩트하게보기 위해 출력 '\ n'을 공간으로 변환했습니다.
내가 사용하고 UNIQ 및 종류 (GNU의로 coreutils)에서 7.4 ... 우분투 10.04.3 LTS 데스크탑에서 실행합니다.
스크립트 :
{
locale -k LC_COLLATE
echo
for c1 in x 〼 ;do
for c2 in z 〇 ;do
echo -n "asis : "; echo -e "$c1\n$c2\n$c2" |tr '\n' ' ';echo
echo -n "uniq : "; echo -e "$c1\n$c2\n$c2" |uniq |tr '\n' ' ';echo
echo -n "sort -u: "; echo -e "$c1\n$c2\n$c2" |sort -u |tr '\n' ' ';echo
echo
done
echo
done
}
출력 :
collate-nrules=4
collate-rulesets=""
collate-symb-hash-sizemb=2081
collate-codeset="UTF-8"
asis : x z z
uniq : x z
sort -u: x z
asis : x 〇 〇
uniq : x 〇
sort -u: 〇 x
asis : 〼 z z
uniq : 〼 z
sort -u: 〼 z
asis : 〼 〇 〇
uniq : 〼
sort -u: 〼
# In the last example (of 4) where did the '〇' go? .. U+3007 IDEOGRAPHIC NUMBER ZERO
#
sort -u
과 uniq
함께 작동합니다. LC_COLLATE=C; echo -e "〼\n〇\n〇" |sort -u
(또는 |uniq
)
sort
혼자합니다 (없이 -u ... 옵션) .. 간다 무엇, 나오는 문자를 중얼하지 않습니다 ... 그러나, 예상 할 수 있으므로 질에 갖는 "이국적인"유니 코드 문자의 설명 같은 정규 값을 ,이 정렬되지 않은 FIFO 그룹으로 정렬 된 출력의 "맨 위"에 출력되는 것 이외의 문자는 정렬되지 않습니다. 따라서 여기에는 실제로 두 가지 문제가 있습니다. 1. "순진하게 정렬 될 수없는 문자 모두의 독특한 "기능"예상, 및 2 "sort
와uniq
(경우에 따라)을 잃게 데이터입니다.