`uniq -t`는 무엇을 했습니까?


15

2003 년부터 명령 -t옵션을 사용하는 오래된 코드가 있습니다 uniq. 해당 옵션이 더 이상 지원되지 않으므로 오류가 발생합니다.

명령을 사용하는 부분은 다음과 같습니다.

egrep -n "{ IA32_OP" ia32-decode.c | \
    awk '{ print $1 $3 $4 }' | \
    sort -t '(' +1 | \
    uniq -t ':' -f 1 | \
    sed 's/\(.*\)\:IA32_OP(\(.*\)),/#define IA32_OP_\2 \1/g' >> ia32_opcodes.h

그때 그 옵션은 무엇을 했습니까? 그 명령으로 무엇을 대체 할 수 있습니까?



에 따르면 man uniq, -f 1첫 번째 필드를 비교 피할 수 있습니다. 에서 나는 추론 것 -t ':'그가 -t에 공백에서 필드 구분자를 변경하도록되어 :.
Martin von Wittich

아마 관련 : stackoverflow.com/questions/10546337/...은 어쩌면 -t나중에 제거 데비안 고유의 옵션을했다?
Martin von Wittich


1
왜 나는 항상 궁금 uniq동일하지 않았다 -t-k같은 종류 또는 왜 종류의 모든 기능이 없었다 uniq(지금 가지고 있기 때문에 통합을 -u). 사람들은 -w/ -f/ -sGNU에서 이해가되지 않습니다 UNIQ. 왜 그들은 같은 구문을 사용 할 수 없습니다 sort.
Stéphane Chazelas

답변:


13

내가 찾을 수있는 유일한 참조 -t이 패치입니다 다른 단서들이 포함 된 GNU의 메일 링리스트에,이 :

+  -t, --separator=S     use a character in string S as field separator\n\

이것은 분명히 GNU 확장이지만 더 이상 사용되지 않습니다. 공백이나 탭 이외의 필드에 대해 구분 문자를 선택할 수있는 것으로 보입니다. 교체해보십시오

uniq -t ':' -f 1 | \

sed 's/:/ /' | \
uniq -f 1 | \

:uniq가 필드 구분 기호를 인식하는 공백으로 대체 됩니다.


첫 번째 필드 만 건너 뛰기 때문에 gfrom 을 삭제합니다 sed. 마지막 줄이 작동하려면 최소한 하나의 콜론이 필요합니다 (첫 번째가 아닌). 그래도 작동하지 않을 것이라는 보장은 없습니다 (첫 번째 필드에는 공백이 포함될 수 있음)
Graeme

@Graeme 좋은 지적, 편집했다.
케이시

데비안에서 coreutils 5.2.1은 실제로 그러한 패치를 적용했으며, 분명히 5.93-1, 즉 2005 년 11 월에 제거되었습니다.
user2719058

4

에 대한 man항목을 감안할 때-f옵션에 :

-f, --skip-fields = N

         avoid comparing the first N fields

필자 -t는 필드 구분 기호 를 지정 한다고 가정하는 것이 안전하다고 생각합니다 ( sort위의 줄 에서도 마찬가지입니다 ). 두 옵션의 조합은 uniq첫 번째 콜론 다음 줄의 일부에서만 작동합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.