【发布时间】:2013-12-08 10:12:23
【问题描述】:
我们都知道解决问题总是有多种方法。我想知道在一种情况下每种特定解决方案的优缺点是什么。时间和空间方面(也许是清洁度——但这是主观的,所以不是主要焦点)。
您有一个文件,其中还包含包含字符串xyz 的行,但不限于此。您对特定列中整数值应满足条件的行感兴趣。
我使用它的一个例子是从 sslscan 输出中过滤弱密码。这不是特别的时间和空间密集型,所以这个例子只是为了更清楚地了解它的外观。
这个问题出现了,当我试图寻找解决方案时,我在stackoverflow上找到了各种不同的答案,然后我自己也想出了一些东西。
可能的解决方案1(纯awk):
awk '$0~/xyz/ && $3 < 128 {$1=""; print}' file-with-data.txt
可能的解决方案2(awk + cut):
awk '$0~/xyz/ && $3 < 128' file-with-data.txt | cut -c15-
可能的解决方案 3(bash):
grep xyz file-with-data.txt | while read -r line
do if [ $(echo $line | cut -d" " -f3) -le 127 ]
then echo $line
fi
done
【问题讨论】:
-
嗯,存在清洁问题,- 留在 bash 中是否更好,在 awk 中后留在 awk 中是否更好... - 没有什么可以衡量的。也可能有使用一种或另一种有趣的方式的经验。这里也不是真正可测量的。