「uniq -t」は何をしましたか?


15

コマンドの-tオプションを使用する2003年の古いコードがいくつかあります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

そのオプションは当時何をしましたか?そのコマンドを何に置き換えることができますか?


ソースBTWは次のとおりです。web.archive.org
web

よるとman uniq-f 1最初のフィールドを比較回避。私はそれからフィールドセパレーターを空白からに変更することになっ-t ':'-tいると推測し:ます。
マーティン・フォン・ウィッティヒ

関連する可能性がある:stackoverflow.com/questions/10546337/…多分-t、後で削除されたDebian固有のオプションでしたか?
マーティン・フォン・ウィッティヒ14


1
なぜソートがuniq同じ-t-kはなく、なぜソートにuniq組み込まれている機能がすべて備わっていないのか(今ではあるので-u)、私はいつも疑問に思っていました。これら-w/ -f/ -sGNUからは意味がありませんUNIQ。と同じ構文を使用できなかったのはなぜですかsort
ステファンシャゼル14

回答:


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ます。最後の行が機能するためには、少なくとも1つのコロンが必要です(最初の行ではないことが望ましい)。それでも動作する保証はありません(最初のフィールドには空白が含まれる場合があります)
Graeme 14

@Graeme良い点、編集。
ケーシー14

2005年11月に、あること、Debianのでは、coreutilsの5.2.1は確かに、このようなパッチが適用されていた、と明らかにそれは5.93から1で削除されました
user2719058

4

オプションのmanエントリが与えられた-f場合:

-f、-skip-fields = N

         avoid comparing the first N fields

-tフィールドセパレータを指定していると仮定するのはかなり安全だと思います(これはsort上の行でも同様です)。2つのオプションの組み合わせはuniq、最初のコロンに続く行の部分でのみ動作します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.