テキストファイル列の特定の範囲のオブジェクトまたは要素の名前変更

テキストファイル列の特定の範囲のオブジェクトまたは要素の名前変更

以前の質問を拡張するために別のファイルパターンがあり、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)数字を除く最初の列のすべての項目を削除します。

おすすめ記事