私が望むのは、最初の列が「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
答え2
使用sed
sed 's/^[0-9]/chr&/' file