2010-12-13 3 views
3

分析する必要がある膨大なファイルがあります。私がしたいのは、特定の列に特定の値を持つ行を区切ることです。だから、それは特定のカテゴリに属する​​データだけを選択するようなものです。単純なbashコマンドラインやスクリプトを使って、これをどうやって実現できますか?Bash:列内の特定の値を持つファイルから行を選択する方法

たとえば、8番目の列に1,2,3または4の値を持つ行のみを区切りたいとします。ファイルはスペースで区切られています。

答えて

4

あなたはawkのように使用することができます。

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

おかげで、AWKを学んだはずです。便利だと思われる:)。 – sfactor

+0

ファイルがgzipされていて、gunzip -c file | ...?パイプでawkメソッドを実行できませんでした。 – Ash

+0

入力ファイルがgzipである場合:gunzip -c input.gz | awk 'BEGIN {FS = "\ t"} $ 5 == "en" || $ 13 == "en" '| gzip> output.gz – Ash

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 
関連する問題