防止重复变量并使用awk语句进行打印

时间:2013-09-15 13:37:45

标签: shell awk scripting-language

我正在遍历文件并使用awk

打印一组值
echo $value | awk ' {print $4}' >> 'some location'

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

提前致谢。

2 个答案:

答案 0 :(得分:3)

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

例如:

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

仅保留第四列的唯一值

答案 1 :(得分: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是正确的做法。