내 작업 흐름에서 다음 파일을 만들었습니다.
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