关于正则表达式:Bash:剪切每个字符串的分隔片段

Bash: cutting a delimited fragment of each string

我有一个文件包含如下所示的行:

1
2
3
4
5
6
GTTCAGAGTTCTACAGTCCGACGATCGGATGAGNNNNNN
GTTCAGAGTTCTACAGTCCGACGATCTCCGAGTNNNNNN
GTTCAGAGTTCTACAGTCCGACGATCCTTATATNNNNNN
GTTCAGAGTTCTACAGTCCGACGATCGAAGTGCNNNNNN
GTTCAGAGTTCTACAGTCCGACGATCAAGTTTTNNNNNN
GTTCAGAGTTCTACAGTCCGACGATCCGACGAANNNNNN

我想从每一行中删除前26个和最后6个字符。 我无法用vi编写一个好的正则表达式,但我不知道还能做什么。
有什么建议?

谢谢!


尝试用grep。

这将保留最后13个字符,然后保留前7个字符,仅返回匹配字符(-o)和符合Perl的-P标志:

1
grep -oP".{13}$" foo.txt | grep -oP".{7}"


如果您的文件名是foo,您可以使用剪切来获取所需的字符范围:

1
$ cut -c27-33 foo

这会产生:

1
2
3
4
5
6
GGATGAG
TCCGAGT
CTTATAT
GAAGTGC
AAGTTTT
CGACGAA


cut可以采用字符范围,如果这些行是固定大小(它们看起来都是39个字符)

1
cut -c27-33 file.txt