Uniq

uniq -t 做了什麼?

  • February 1, 2014

我有一些 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僅對第一個冒號之後的行部分進行操作。

引用自:https://unix.stackexchange.com/questions/112004