나는 아직도 리눅스 명령을 배우고, 누군가가 내가 뭘하려고 오전 나를 도울 수 있는지 궁금 해서요 :리눅스는 조건 패턴을 대체 명령
3 rs123 0 600001 A G
3 rs345 0 600002 T G
3 3:124369637:A_G 0 124369637 A G
3 3:124369637:G_GT 0 124369637 G GT
그리고 :이 같은 파일이 나는 5 번째와 6 번째 컬럼의 길이가 1보다 큰 경우에만 콜론의 두 번째 발생 후 "ID"로 대체하려고합니다. 길이가 1 인 경우에는 두 번째 발생 이후의 모든 것을 제거해야합니다. 콜론. 그래서 나는 이것을 싶습니다
3 rs123 0 600001 A G
3 rs345 0 600002 T G
3 3:124369637 0 124369637 A G
3 3:124369637:ID 0 124369637 G GT
나는 여러 가지 방법으로 시도, 나는 어떤 점까지 얻을 수 있지만, 나는 마지막 부분에 붙어있다. 또한, 내가 지금 가지고있는 것은 길고 뒤틀린 것처럼 보입니다. 어떤 조언도 대단히 감사합니다! 고맙습니다!
우선이 추가 않는다 "ID를"모든 경우에이 형식 3 : 124,369,637 :
awk -F' ' '//{gsub(/[:][A-Za-z].*/, ":ID", $2); print} file.txt
다음
난 단지 경우에 ID를 유지하기 위해이 시도 곳 열 다섯의 길이와 6> 1이다 (하지만이 작동하지 않습니다) :
awk -F' ' '{
if (length($5) ==1 && length($6) ==1 && $2 ~/ID/)
gsub(/ID/,"");print;
else
print;
}' file.txt
다섯 번째 열이 1보다 큽니까? 하지만 편지입니다 – zhujs
안녕하십니까, 5 번째 열의 길이가 1보다 큽니다 (즉, A 대신 AG) – user971102