Bash:剪切每个字符串的分隔片段

时间:2013-12-03 23:08:55

标签: regex bash

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

GTTCAGAGTTCTACAGTCCGACGATCGGATGAGNNNNNN
GTTCAGAGTTCTACAGTCCGACGATCTCCGAGTNNNNNN
GTTCAGAGTTCTACAGTCCGACGATCCTTATATNNNNNN
GTTCAGAGTTCTACAGTCCGACGATCGAAGTGCNNNNNN
GTTCAGAGTTCTACAGTCCGACGATCAAGTTTTNNNNNN
GTTCAGAGTTCTACAGTCCGACGATCCGACGAANNNNNN

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

谢谢!

3 个答案:

答案 0 :(得分:3)

尝试使用grep。

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

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

答案 1 :(得分:2)

如果你的文件名是foo,你可以使用剪切来获取你想要的字符范围:

$ cut -c27-33 foo

这会产生:

GGATGAG
TCCGAGT
CTTATAT
GAAGTGC
AAGTTTT
CGACGAA

答案 2 :(得分:1)

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

cut -c27-33 file.txt