linux 中输出特定列指定字符连续重复的行号
001、
[root@PC1 test02]# ls a.txt [root@PC1 test02]# cat a.txt ## 测试数据 333 kkk gene 777 1 333 kkk exon 777 2 333 kkk exon 777 3 333 kkk gene 777 4 333 kkk exon 777 5 333 kkk gene 777 6 333 kkk gene 777 7 333 kkk gene 777 8 333 kkk exon 777 9 333 kkk exon 777 9 [root@PC1 test02]# awk 'BEGIN{sum = 0} {if($3 == "gene") {sum++} else {sum = 0}; if(sum > 1) {print NR - 1; print NR}}' a.txt 6 7 7 8 ## 输出第三列指定字符 gene 有连续重复的行号 [root@PC1 test02]# awk 'BEGIN{sum = 0} {if($3 == "gene") {sum++} else {sum = 0}; if(sum > 1) {print NR - 1; print NR}}' a.txt | uniq 6 7 8
。
002、
[root@PC1 test02]# ls a.txt [root@PC1 test02]# cat a.txt ## 测试数据 333 kkk gene 777 1 333 kkk exon 777 2 333 kkk exon 777 3 333 kkk gene 777 4 333 kkk exon 777 5 333 kkk gene 777 6 333 kkk gene 777 7 333 kkk gene 777 8 333 kkk exon 777 9 333 kkk exon 777 9 [root@PC1 test02]# awk 'BEGIN{temp="@#$"}{if($3 == temp) {print NR - 1; print NR};if($3 == "gene") {temp = "gene"} else {temp = "other"}}' a.txt 6 7 7 8 ## 输出基因有连续重复的行号 [root@PC1 test02]# awk 'BEGIN{temp="@#$"}{if($3 == temp) {print NR - 1; print NR};if($3 == "gene") {temp = "gene"} else {temp = "other"}}' a.txt | uniq 6 7 8
003、不限制指定字符
[root@PC1 test02]# ls a.txt [root@PC1 test02]# cat a.txt ## 测试数据 333 kkk gene 777 1 333 kkk exon 777 2 333 kkk exon 777 3 333 kkk gene 777 4 333 kkk exon 777 5 333 kkk gene 777 6 333 kkk gene 777 7 333 kkk gene 777 8 333 kkk exon 777 9 333 kkk exon 777 9 ## 输出有连续重复行的行号 [root@PC1 test02]# awk 'BEGIN{temp="@#$"}{if($3 == temp) {print NR - 1; print NR}; temp = $3}' a.txt 2 3 6 7 7 8 9 10
。