0

を使用すると、最初の文字uniqのみを比較するように選択できますN

$ 猫 foo.txt
素早い茶色のキツネが怠け者の犬を飛び越えます。
素早い茶色のキツネが怠け者の猫を飛び越えます。
機敏な茶色のキツネが怠け者のネズミを飛び越えます。

$ uniq -w 40 foo.txt
素早い茶色のキツネが怠け者の犬を飛び越えます。

を使用して同じ効果を達成できますawkか? この例を読んだ

awk '!a[$0]++'

しかし、それは行全体を比較します。

4

2 に答える 2

11

awk には次のsubstr()機能があります。

awk '!a[substr($0,1,40)]++'

あなたの例で:

kent$  echo "The quick brown fox jumps over the lazy dog.
The quick brown fox jumps over the lazy cat.
The quick brown fox jumps over the lazy mouse."|awk '!a[substr($0,1,40)]++'
The quick brown fox jumps over the lazy dog
于 2013-05-01T21:03:02.017 に答える
0

FIELDWIDTHSと を使用した 2 つの代替方法FPAT:

awk '!a[$1]++' FIELDWIDTHS=40

awk '!a[$1]++' FPAT='.{40}'
于 2013-05-02T08:44:45.037 に答える