awk распечатать несколько подстрок - PullRequest
0 голосов
/ 19 октября 2018

Я хотел бы иметь возможность печатать несколько подстрок через awk.Вот пример того, что я обычно делаю;

awk' {print substr($0,index($0,string),10)} ' test.txt > result.txt

Это позволяет мне напечатать 10 букв после обнаружения моей строки.Но результат - первая подстрока, а не несколько, как я ожидал.

Вот пример, если я использую строку "ATGC":

test.txt

ATGCATATAAATGCTTTTTTTTT

result.txt

ATGCATATAA

вместо

ATGCATATAA
ATGCTTTTTT

Что я должен добавить?

Я уверен, что ответ вам прост, ребята!Спасибо за вашу помощь.

Ответы [ 2 ]

0 голосов
/ 20 октября 2018
awk '{print substr($0,1,10),RS substr($0,length -12,10)}' file

ATGCATATAA 
ATGCTTTTTT
0 голосов
/ 19 октября 2018

Если у вас есть gawk (gnu awk), вы можете использовать FPAT:

awk -v FPAT='ATGC.{6}' '{for(i=1;i<=NF;i++)print $i}' file

С вашим примером:

$ awk -v FPAT='ATGC.{6}' '{for(i=1;i<=NF;i++)print $i}' <<<"ATGCATATAAATGCTTTTTTTTT"                                                                                  
ATGCATATAA                                                                                                                                                                 
ATGCTTTTTT
...