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使用and 的两种选择FPAT

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

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