我有一個需要分析的巨大文件。我想要做的是將那些在特定列中具有特定值的行分開。因此,它就像只選擇那些屬於某個類別的數據。如何用簡單的bash commnand或腳本來完成。Bash:如何從列中具有特定值的文件中選擇行
例如,我想僅分隔那些在第8列中具有值1,2或3的行。該文件是空格分隔的。
我有一個需要分析的巨大文件。我想要做的是將那些在特定列中具有特定值的行分開。因此,它就像只選擇那些屬於某個類別的數據。如何用簡單的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