以前の質問を拡張するために別のファイルパターンがあり、seq1からseq20(seq1-seq20)の範囲の最初の列名をseq1に変更しようとしています。同様に、範囲はseq21からseq60(seq21-seq60)をseq2にします。ファイル名は file.txt で、形式は次のとおりです。
seq22 19301 20914 fill_color=green_a0
seq55 16726 18337 fill_color=green_a0
seq10 167934 169650 fill_color=green_a0
seq36 200621 202367 fill_color=red_a0
seq7 160164 161903 fill_color=green_a0
seq56 31356 33104 fill_color=green_a0
seq25 15030 16656 fill_color=green_a0
seq43 99693 101326 fill_color=red_a0
seq19 66168 67689 fill_color=green_a0
seq50 55955 57479 fill_color=green_a0
seq9 454456 456277 fill_color=green_a0
seq35 282633 284453 fill_color=green_a0
seq10 354264 355872 fill_color=green_a0
seq36 10125 11742 fill_color=red_a0
seq3 106668 110910 fill_color=green_a0
出力ファイルは次のとおりです。
seq2 19301 20914 fill_color=green_a0
seq2 16726 18337 fill_color=green_a0
seq1 167934 169650 fill_color=green_a0
seq2 200621 202367 fill_color=red_a0
seq1 160164 161903 fill_color=green_a0
seq2 31356 33104 fill_color=green_a0
seq2 15030 16656 fill_color=green_a0
seq2 99693 101326 fill_color=red_a0
seq1 66168 67689 fill_color=green_a0
seq2 55955 57479 fill_color=green_a0
seq1 454456 456277 fill_color=green_a0
seq2 282633 284453 fill_color=green_a0
seq1 354264 355872 fill_color=green_a0
seq2 10125 11742 fill_color=red_a0
seq1 106668 110910 fill_color=green_a0
私はこれを試しました
sed -e "s/seq[1:20]*/seq1/" -e "s/seq[21:60]*/seq2/" file.txt
そして
awk 'NR>=seq1 && NR<=seq20{sub("seq*","seq1",$0)} 1' file.txt
ベストアンサー1
私は以下をお勧めします:
awk '{gsub(/[^0-9]/,"",$1); if($1+0<21){$1="seq1"} else {$1="seq2"}; print}' file
gsub(/[^0-9]/,"",$1)
数字を除く最初の列のすべての項目を削除します。