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

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

관련 정보