2010-12-13 51 views
3

我有一個需要分析的巨大文件。我想要做的是將那些在特定列中具有特定值的行分開。因此,它就像只選擇那些屬於某個類別的數據。如何用簡單的bash commnand或腳本來完成。Bash:如何從列中具有特定值的文件中選擇行

例如,我想僅分隔那些在第8列中具有值1,2或3的行。該文件是空格分隔的。

回答

4

您可以使用AWK爲:

awk '$8 == 1 || $8 == 2 || $8 == 3 || $8 == 4' file 
+0

感謝,應該已經學到的awk。似乎很方便:)。 – sfactor 2010-12-13 12:55:06

+0

如果文件是gzipped,我需要gunzip -c文件| ...?我無法在管道中運行awk方法。 – Ash 2016-07-20 06:32:38

+0

如果輸入文件是gzip:gunzip -c input.gz | awk'BEGIN {FS =「\ t」} $ 5 ==「en」|| $ 13 ==「en」'| gzip> output.gz – Ash 2016-07-20 23:17:08

3

用AWK:

awk '$8 >= 1 && $8 <= 4' your_file.txt 
2

另一個awk的答案。

awk '$8 ~ /[1-4]/' file 

但是,只是一些品種,一個bash答案

while read line ; do 
    fields=($line) 
    [[ ${fields[7]} =~ [1-4] ]] && echo $line 
done < file 
3

另一個AWK答案:

awk '$8 ~ /1|2|3|4/' inputfile 
相關問題