分析する必要がある膨大なファイルがあります。私がしたいのは、特定の列に特定の値を持つ行を区切ることです。だから、それは特定のカテゴリに属するデータだけを選択するようなものです。単純なbashコマンドラインやスクリプトを使って、これをどうやって実現できますか?Bash:列内の特定の値を持つファイルから行を選択する方法
たとえば、8番目の列に1,2,3または4の値を持つ行のみを区切りたいとします。ファイルはスペースで区切られています。
分析する必要がある膨大なファイルがあります。私がしたいのは、特定の列に特定の値を持つ行を区切ることです。だから、それは特定のカテゴリに属するデータだけを選択するようなものです。単純なbashコマンドラインやスクリプトを使って、これをどうやって実現できますか?Bash:列内の特定の値を持つファイルから行を選択する方法
たとえば、8番目の列に1,2,3または4の値を持つ行のみを区切りたいとします。ファイルはスペースで区切られています。
あなたは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
ファイルがgzipされていて、gunzip -c file | ...?パイプでawkメソッドを実行できませんでした。 – Ash
入力ファイルがgzipである場合:gunzip -c input.gz | awk 'BEGIN {FS = "\ t"} $ 5 == "en" || $ 13 == "en" '| gzip> output.gz – Ash