Bash awk选择负值到正值范围的一个线性?

Bash awk选择负值到正值范围的一个线性?,bash,awk,sed,Bash,Awk,Sed,我试图运行一个awk命令来选择.txt文件中的几列,这些列具有特定列的特定值范围。我使用的是第10列,它的距离分数既有正的,也有负的,我想从该文件中选择几个列作为间隔-第10列为1000到1000。我使用了下面的命令,但它没有运行 awk -v OFS='\t' '{if($10 >= -1000 && $10 <= 1000)print $2,$3,$4,$5,$8,$10$16} file.txt > promoter.txt 现在,上面的输出应该排除-1

我试图运行一个awk命令来选择.txt文件中的几列,这些列具有特定列的特定值范围。我使用的是第10列,它的距离分数既有正的,也有负的,我想从该文件中选择几个列作为间隔-第10列为1000到1000。我使用了下面的命令,但它没有运行

awk -v OFS='\t' '{if($10 >= -1000 && $10 <= 1000)print $2,$3,$4,$5,$8,$10$16} file.txt > promoter.txt
现在,上面的输出应该排除-1000到1000范围之外的两行。但这个命令似乎不起作用。我哪里弄错了。

awk'BEGIN{FS=OFS=“\t”}$10>=-1000&&$10 promotor.txt
awk  'BEGIN{ FS = OFS = "\t" } $10 >= -1000 && $10 <= 1000 {print $2,$3,$4,$5,$8,$10$16} file.txt > promoter.txt
您只定义OFS(输出分隔符,但将输入分隔符(FS)保留为泛型,以便使用空格字符)

awk'BEGIN{FS=OFS=“\t”}$10>=-1000&&$10.txt

您只定义OFS(输出分隔符,但保持输入分隔符(FS)通用,以便使用空格字符)

您的意思是
$11
而不是
$10
?我们需要更多地了解数据的结构-不清楚确切的格式是什么。默认情况下,awk将每个记录拆分为任何类型空格字符的字段,因此第二行上的字段数与第三行上的字段数不同,因为类似于
启动子TSS(NM_006346)
外显子(NM_024894,外显子1/21)
的部分不同。也许基于正则表达式的方法更合适。无论哪种方式,您都应该向我们显示所需的输出。这似乎是标题的问题,当我从父文件中选择几个字段,然后运行awk时,它会工作,因此,似乎是父文件格式的问题调试应该很简单,只需打印$10即可检查您是否能够为每行提取正确的值(不是!)您的意思是
$11
而不是
$10
?我们需要更多地了解数据的结构-不清楚确切的格式是什么。默认情况下,awk将每个记录拆分为任何类型空格字符的字段,因此第二行上的字段数与第三行上的字段数不同,因为类似于
启动子TSS(NM_006346)
外显子(NM_024894,外显子1/21)
的部分不同。也许基于正则表达式的方法更合适。无论哪种方式,您都应该向我们显示所需的输出。这似乎是标题的问题,当我从父文件中选择几个字段,然后运行awk时,它会工作,因此,父文件格式化似乎是个问题。调试应该很简单,只需打印$10即可检查您是否能够为每行提取正确的值(您不能!)
awk  'BEGIN{ FS = OFS = "\t" } $10 >= -1000 && $10 <= 1000 {print $2,$3,$4,$5,$8,$10$16} file.txt > promoter.txt