Bash:如何从列中具有特定值的文件中选择行
问题描述:
我有一个需要分析的巨大文件。我想要做的是将那些在特定列中具有特定值的行分开。因此,它就像只选择那些属于某个类别的数据。如何用简单的bash commnand或脚本来完成。Bash:如何从列中具有特定值的文件中选择行
例如,我想仅分隔那些在第8列中具有值1,2或3的行。该文件是空格分隔的。
答
您可以使用AWK为:
awk '$8 == 1 || $8 == 2 || $8 == 3 || $8 == 4' file
答
用AWK:
awk '$8 >= 1 && $8 <= 4' your_file.txt
答
另一个awk的答案。
awk '$8 ~ /[1-4]/' file
但是,只是一些品种,一个bash答案
while read line ; do
fields=($line)
[[ ${fields[7]} =~ [1-4] ]] && echo $line
done < file
答
另一个AWK答案:
awk '$8 ~ /1|2|3|4/' inputfile
感谢,应该已经学到的awk。似乎很方便:)。 – sfactor 2010-12-13 12:55:06
如果文件是gzipped,我需要gunzip -c文件| ...?我无法在管道中运行awk方法。 – Ash 2016-07-20 06:32:38
如果输入文件是gzip:gunzip -c input.gz | awk'BEGIN {FS =“\ t”} $ 5 ==“en”|| $ 13 ==“en”'| gzip> output.gz – Ash 2016-07-20 23:17:08