2

我正在遍历文件并使用 awk 打印一组值

echo $value | awk ' {print $4}' >> 'some location'

该命令工作正常,但我想防止重复值存储在文件中

提前致谢。

4

2 回答 2

3

您应该对整个文件使用单个 awk 命令,而不是逐行处理文件

例如:

awk '!a[$4]++{print $4}' file >> 'some location'

只会保留第四列的唯一值

于 2013-09-15T13:41:18.090 回答
0

仅使用 user000001 建议的一个实例awk当然是正确的做法,并且由于问题中给出的细节很少,这纯粹是推测,但最简单的解决方案可能是对循环进行微不足道的重构。例如,如果当前代码是:

while ...; do
  ...
  echo $value | awk ...
  ...
done

您可以简单地将其更改为:

while ...; do
    ...    
    echo $value >&5
    ...
done 5>&1 | awk '!a[$4]++{print $4}' >> /p/a/t/h

请注意,尽管在要更改的代码方面这是一个“简单”的修复,但几乎可以肯定它不是正确的修复!完全删除 while 循环并仅使用 awk 是正确的做法。

于 2013-09-16T14:10:54.763 回答