linux 系统中如何匹配指定数目的连续多个字符

 

1、测试数据

root@PC1:/home/test2# ls test.txt root@PC1:/home/test2# cat test.txt attatgcccagggtttgttacttcagatgtgtccagagtttctcccttct ggcaggttcatggtcttgctcacttcaagaatgaagctgcagacatttac ggtgagtgttacagcacttatatttgttgtatccagagtttgttccttca gatgtgtccagaatttcttccttctggcgggttcatggtcttgctcactt

 

2、提取前10个字符(连续匹配)

root@PC1:/home/test2# ls test.txt root@PC1:/home/test2# cat test.txt attatgcccagggtttgttacttcagatgtgtccagagtttctcccttct ggcaggttcatggtcttgctcacttcaagaatgaagctgcagacatttac ggtgagtgttacagcacttatatttgttgtatccagagtttgttccttca gatgtgtccagaatttcttccttctggcgggttcatggtcttgctcactt root@PC1:/home/test2# sed 's/[a-z]\{10\}/& /' test.txt                          ## 匹配前10个字符 attatgccca gggtttgttacttcagatgtgtccagagtttctcccttct ggcaggttca tggtcttgctcacttcaagaatgaagctgcagacatttac ggtgagtgtt acagcacttatatttgttgtatccagagtttgttccttca gatgtgtcca gaatttcttccttctggcgggttcatggtcttgctcactt root@PC1:/home/test2# sed 's/[a-z]\{10\}/& /' test.txt | awk '{print $1}'       ## 提取前10个字符 attatgccca ggcaggttca ggtgagtgtt gatgtgtcca

 

3、提取后10个字符(连续匹配)

root@PC1:/home/test2# ls test.txt root@PC1:/home/test2# cat test.txt attatgcccagggtttgttacttcagatgtgtccagagtttctcccttct ggcaggttcatggtcttgctcacttcaagaatgaagctgcagacatttac ggtgagtgttacagcacttatatttgttgtatccagagtttgttccttca gatgtgtccagaatttcttccttctggcgggttcatggtcttgctcactt root@PC1:/home/test2# sed 's/[a-z]\{10\}$/ &/' test.txt                         ## 匹配后10个字符 attatgcccagggtttgttacttcagatgtgtccagagtt tctcccttct ggcaggttcatggtcttgctcacttcaagaatgaagctgc agacatttac ggtgagtgttacagcacttatatttgttgtatccagagtt tgttccttca gatgtgtccagaatttcttccttctggcgggttcatggtc ttgctcactt root@PC1:/home/test2# sed 's/[a-z]\{10\}$/ &/' test.txt | awk '{print $NF}'     ## 提取后10个字符 tctcccttct agacatttac tgttccttca ttgctcactt