내가 원하는 것은 첫 번째 열이 "rs" 또는 "chr"로 시작하지 않는 행을 검색한 다음 해당 행이 숫자로 시작하는 경우 첫 번째 열 값에 "chr"을 추가하고, 그렇지 않으면 그대로 두는 것입니다. 추가하지 마세요.
다음 코드가 있습니다.
awk '((!($1 ~ /rs/ || $1 ~ /chr/)) && $1 ~ /^[[:0-9:]]|$/) {$1 = "chr"$1}1' filename > newfilename
괜찮지만 "rs" 또는 "chr"로 시작하지 않는 모든 첫 번째 열 값에 "chr"을 추가합니다. 이 열에는 변경하고 싶지 않은 값이 있는데, 모두 문자(az)로 시작합니다. 숫자(0~9)로 시작하는 값만 변경하고 싶습니다.
감사해요!
답변1
Fiximan의 의견에서 이미 언급했듯이 숫자를 찾으면 "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