Bash 是否筛选以制表符分隔的文件的多列?
一个非常简单的问题,我如何过滤出一个由多个列组成的制表符分隔的文件 该文件如下所示:Bash 是否筛选以制表符分隔的文件的多列?,bash,shell,Bash,Shell,一个非常简单的问题,我如何过滤出一个由多个列组成的制表符分隔的文件 该文件如下所示: chr10 100008748 100010821 . . - 1 1 1 1 1 3 0 0 3 5 13 2 3 11 1 4 chr10 100010933 100011322 . . - 1 1 1 1 1 0 2 0 5 3 11 0 0 6 1
chr10 100008748 100010821 . . - 1 1 1 1 1 3 0 0 3 5 13 2 3 11 1 4
chr10 100010933 100011322 . . - 1 1 1 1 1 0 2 0 5 3 11 0 0 6 1 4
chr10 100010954 100011322 . . - 0 1 0 1 0 0 0 0 0 1 0 0 0 0 0 0
chr10 100011459 100012109 . . - 1 1 1 1 1 1 0 4 8 2 17 4 3 11 2 2
chr10 100011959 100015344 . . + 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0
我需要应用的过滤器是10。准确地说,我需要在所有列中看到10或更多。我尝试了以下脚本,但不起作用:
cat infile.txt \
> while read line \
> do \
> ext=`echo $line | cut -f11-` \
> if [ "$ext" >= "10" \] \
> then \
> echo $line \
> fi \
> done > outfile.txt
我该怎么做呢
错误消息:
cat: while: No such file or directory
cat: read: No such file or directory
cat: line: No such file or directory
cat: do: No such file or directory
cat: ext=: No such file or directory
cat: if: No such file or directory
cat: [: No such file or directory
cat: : No such file or directory
cat: 10: No such file or directory
cat: ]: No such file or directory
cat: then: No such file or directory
cat: echo: No such file or directory
cat: fi: No such file or directory
cat: done: No such file or directory
您可以使用awk:
awk -F'\t' '{for (i=11; i<=22; i++) if ($i>10) {print; break}}' file
chr10 100008748 100010821 . . - 1 1 1 1 1 3 0 0 3 5 13 2 3 11 1 4
chr10 100010933 100011322 . . - 1 1 1 1 1 0 2 0 5 3 11 0 0 6 1 4
chr10 100011459 100012109 . . - 1 1 1 1 1 1 0 4 8 2 17 4 3 11 2 2
awk-F'\t'{for(i=11;i10){print;break}}文件
chr10 100008748 100010821..-1 1 1 1 1 3 0 0 3 5 13 2 3 11 1 4
chr10 100010933 100011322..-1 1 1 1 1 0 2 0 5 3 11 0 0 6 1 4
chr10 100011459 100012109..-1 1 1 1 1 1 0 4 8 2 17 4 3 11 2 2
您可以尝试以下方法:
awk 'BEGIN {FS="\t"} {for (i=11;i<=NF;i++) {printf $i"\t" }}{printf "\n"}' file.txt
样本输出将为:
1 3 0 0 3 5 13 2 3 11 1 4
1 0 2 0 5 3 11 0 0 6 1 4
0 0 0 0 0 1 0 0 0 0 0 0
1 1 0 4 8 2 17 4 3 11 2 2
0 0 0 0 0 0 0 0 0 0 0 0
您能给出一个示例输出吗?我在所有列中添加了错误消息10或更大,或在任何列中添加了错误消息10或更大?在第11列到第22列中添加了错误消息10或更大预期输出。。。?
1 3 0 0 3 5 13 2 3 11 1 4
1 0 2 0 5 3 11 0 0 6 1 4
0 0 0 0 0 1 0 0 0 0 0 0
1 1 0 4 8 2 17 4 3 11 2 2
0 0 0 0 0 0 0 0 0 0 0 0