私のワークフローで次のファイルを作成しました。
AAGGAGGGAGCTGCATGGAACCTGTGGATATATACACACAAGGTTAACCTCTGTCCTGTAAA 8
GGAGTTCAGATGTGTGCTCTTCCGATCTGGAGGTCTCTGCTGGGGCCACCCTGTCCTCTCAG 30
GAGAGAGGAAAGGAAGCGATTGCAGAACTTTCCACAAGGCTTTAGATTCCCCTGTCACAGAG 15
GGAGGAGAAAGAATCAACTTTATAGCATCAGCCCCTTGTTTATTTTAAGTTCAGGGTTTAAG 13
GGGAGAACATTTCCCTCCTTGTCCTCTCCTATCTCACTTACTACATTCCCACTGGTCACTGT 7
GGGACATTTGTGATTACATGGTTGCAGTATTCTTTTTGTTCTTAGTCAGACTGTATAATTGG 4
最初の列の各テキストで、2番目の列の最初の文字数を選択したいと思います。たとえば、最初の行の最初の8文字、2行目の最初の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