두 번째 열 수를 기준으로 첫 번째 열에서 처음 n 문자를 선택하는 방법

두 번째 열 수를 기준으로 첫 번째 열에서 처음 n 문자를 선택하는 방법

내 작업 흐름에서 다음 파일을 만들었습니다.

AAGGAGGGAGCTGCATGGAACCTGTGGATATATACACACAAGGTTAACCTCTGTCCTGTAAA  8  
GGAGTTCAGATGTGTGCTCTTCCGATCTGGAGGTCTCTGCTGGGGCCACCCTGTCCTCTCAG  30     
GAGAGAGGAAAGGAAGCGATTGCAGAACTTTCCACAAGGCTTTAGATTCCCCTGTCACAGAG  15  
GGAGGAGAAAGAATCAACTTTATAGCATCAGCCCCTTGTTTATTTTAAGTTCAGGGTTTAAG  13  
GGGAGAACATTTCCCTCCTTGTCCTCTCCTATCTCACTTACTACATTCCCACTGGTCACTGT  7  
GGGACATTTGTGATTACATGGTTGCAGTATTCTTTTTGTTCTTAGTCAGACTGTATAATTGG  4  

첫 번째 열의 각 텍스트에서 두 번째 열에 있는 첫 번째 문자 수를 선택하고 싶습니다. 예를 들어 첫 번째 줄의 처음 8자, 두 번째 줄의 처음 30자 등입니다.

첫 번째 예와 마찬가지로 출력은 다음과 같습니다.

AAGGAGGG  
GGAGTTCAGATGTGTGCTCTTCCGATCTGG

어떤 아이디어라도 크게 감사하겠습니다.

답변1

그리고 awk:

awk '{ $0 = substr($1, 0, $2) } 1' file.txt

GNU 사용 sed:

sed -r 's/.* ([0-9]+).*/s!^(.{\1}).*!\\1!/' file.txt | \
    cat -n | \
    sed -r -f - file.txt

(GNU는 sed스크립트 파일에서 읽을 수 있기 때문입니다 stdin).

그리고 perl:

perl -lpe 's/.*?([ACTG]+)\s+(\d+).*/ substr($1, 0, $2)/e' file.txt

또 다른 방법 perl:

perl -lape '$_ = substr($F[0], 0, $F[1])' file.txt

답변2

sed 없이:

while read -r d n;do echo ${d:0:$n};done < file.txt 

관련 정보