awk編集列の値(数値の場合)

awk編集列の値(数値の場合)

私が望むのは、最初の列が「rs」または「chr」で始まらない行を検索し、その行が数字で始まる場合は最初の列の値に「chr」を追加し、そうでない場合はそのままにすることです。追加しないでください。

次のコードがあります。

awk '((!($1 ~ /rs/ || $1 ~ /chr/)) && $1 ~ /^[[:0-9:]]|$/) {$1 = "chr"$1}1' filename > newfilename

大丈夫ですが、「rs」または「chr」で始まらない最初の列の値に「chr」を追加します。この列には変更したくない値があり、すべて文字(az)で始まります。数字(0〜9)で始まる値だけを変更したいと思います。

ありがとうございます!

ベストアンサー1

フィクシマンのコメントですでに述べたように、数字を見つけると、「rs」と「chr」が自動的にフィルタリングされます。したがって、数字「chr」で始まる行の前に「chr」を追加するには、次のようにします。

awk '{if ($1 ~ /^[:0-9:]/) printf "chr%s\n", $0; else printf "%s\n", $0;}' filename > newfile

おすすめ記事