Uniq
uniq -t
做了什麼?
我有一些 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
那個選項當時做了什麼?我可以用什麼代替該命令?
我能找到的唯一參考
-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 辨識欄位分隔符的空格。
給定選項的
man
條目-f
:-f, –skip-fields=N
avoid comparing the first N fields
我認為假設
-t
指定欄位分隔符是相當安全的(sort
在上面的行中也是如此)。這兩個選項的組合將uniq
僅對第一個冒號之後的行部分進行操作。