如何使用awk编辑文本文件
我有一个类似以下示例的文本文件:如何使用awk编辑文本文件,awk,Awk,我有一个类似以下示例的文本文件: >chr1:368597-368634 ATGATATAATAAGCCCTTCTCATTAAACATGATATGG >chr1:879533-879955 GGTTGCCGGGGGTAGGGGTGGGGCCACACAAATCTCCAGGAGCCACCACTCAACACAATGGCCCTGCCTCCCACCGCTTTATTTCTTTCGGTTTCGGATGCAAA ACAAAAAATTTTAAAAGAAAATGTGACTTCAAAGGAAAGGAACA
>chr1:368597-368634
ATGATATAATAAGCCCTTCTCATTAAACATGATATGG
>chr1:879533-879955
GGTTGCCGGGGGTAGGGGTGGGGCCACACAAATCTCCAGGAGCCACCACTCAACACAATGGCCCTGCCTCCCACCGCTTTATTTCTTTCGGTTTCGGATGCAAA
ACAAAAAATTTTAAAAGAAAATGTGACTTCAAAGGAAAGGAACAAATTTTCAAAGACTTGGGGGAGTGAAGGCAGAGCCTGGTGCAGATGGACGAGGTCTGCAG
GCCTGT
>chr1:879533-879955
GGTTGCCGGGGGTAGGGGTGGGGCCACACAAATCTCCAGGAGCCACCACTCAACACAATGGCCCTGCCTCCCACCGCTTTATTTCTTTCGGTTTCGGATGCAAA
GCCTGT
>chr1:879533-879639
GGTTGCCGGGGGTAGGGGTGGGGCCACACAAATCTCCAGGAGCCACCACTCAACACAATGGCCCTGCCTCCCACCGCTTTATTTCTTTCGGTTTCGGATGCAAA
AC
每组的第一行是ID,以>开头,下一行是字符序列。在第二行,我想保留最后的29个,去掉其余的。因此,输出将如下所示:
>chr1:368597-368634
ATAAGCCCTTCTCATTAAACATGATATGG
>chr1:879533-879955
GTGCAGATGGACGAGGTCTGCAGGCCTGT
>chr1:879533-879955
TTTCTTTCGGTTTCGGATGCAAAGCCTGT
>chr1:879533-879639
TTTATTTCTTTCGGTTTCGGATGCAAAAC
我如何使用awk实现这一点
上述awk一衬板应能帮助您:
kent$ awk '/^>/||$0=substr($0, length($0)-28)' f
>chr1:368597-368634
ATAAGCCCTTCTCATTAAACATGATATGG
>chr1:879533-879955
GTGCAGATGGACGAGGTCTGCAGGCCTGT
>chr1:879533-879955
TTTCTTTCGGTTTCGGATGCAAAGCCTGT
>chr1:879533-879639
TTTATTTCTTTCGGTTTCGGATGCAAAAC
awk解决方案:
awk 'r~/^>/{ print r ORS substr($0, length-28) }{ r=$0 }' a1
输出:
>chr1:368597-368634
ATAAGCCCTTCTCATTAAACATGATATGG
>chr1:879533-879955
GTGCAGATGGACGAGGTCTGCAGGCCTGT
>chr1:879533-879955
TTTCTTTCGGTTTCGGATGCAAAGCCTGT
>chr1:879533-879639
TTTATTTCTTTCGGTTTCGGATGCAAAAC
另一个awk使用模数决定是否打印或处理:
$ awk 'NR%2;!(NR%2){print substr($0,length()-28)}' file
>chr1:368597-368634
ATAAGCCCTTCTCATTAAACATGATATGG
>chr1:879533-879955
GTGCAGATGGACGAGGTCTGCAGGCCTGT
>chr1:879533-879955
TTTCTTTCGGTTTCGGATGCAAAGCCTGT
>chr1:879533-879639
TTTATTTCTTTCGGTTTCGGATGCAAAAC
$ awk 'NR%2;!(NR%2){print substr($0,length()-28)}' file
>chr1:368597-368634
ATAAGCCCTTCTCATTAAACATGATATGG
>chr1:879533-879955
GTGCAGATGGACGAGGTCTGCAGGCCTGT
>chr1:879533-879955
TTTCTTTCGGTTTCGGATGCAAAGCCTGT
>chr1:879533-879639
TTTATTTCTTTCGGTTTCGGATGCAAAAC