Linux Bash:如何从列中具有特定值的文件中选择行

Linux Bash:如何从列中具有特定值的文件中选择行,linux,bash,command-line,Linux,Bash,Command Line,我有一个巨大的文件需要分析。我想做的是在某一列中分离那些具有特定值的行。因此,这就像只选择属于某一类别的数据。如何使用简单的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'$8>=1&&8又是一个

我有一个巨大的文件需要分析。我想做的是在某一列中分离那些具有特定值的行。因此,这就像只选择属于某一类别的数据。如何使用简单的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'$8>=1&&8又是一个awk答案

awk '$8 ~ /[1-4]/' file
但是,只是为了一些变化,一个简单的答案

while read line ; do
    fields=($line)
    [[ ${fields[7]} =~ [1-4] ]] && echo $line
done < file
读行时
;做
字段=($line)
[${fields[7]}=~[1-4]]&&echo$行
完成<文件

另一个AWK答案:

awk '$8 ~ /1|2|3|4/' inputfile

如果该文件是gzip文件,我需要压缩-c文件|…,该怎么办?我无法在管道中运行awk方法。如果输入文件是gzip:gunzip-c input.gz | awk'BEGIN{FS=“\t”}$5==“en”| |$13==“en”| gzip>output.gz