텍스트 입력:
chrX_143483005-chr6_103649292,chrX_143483110-chr6_103649131 chrX_143483110-chr_6103649147 chrX_143483004-chr6_103649293,chrX_143483110-chr6_103649291,chrX_143483110-chr6_103649053
chrX_143483110-chr_6103649147 chrX_143483005-chr6_103649292,chrX_143483110-chr6_103649131 0
0 chrX_143483005-chr6_103649292,chrX_143483110-chr6_103649131 chrX_143482988-chr6_103649147,chrX_143483004-chr6_103649293,chrX_143483110-chr6_103649291,chrX_143483110-chr6_103649053
chrX_143483005-chr6_103649292,chrX_143483110-chr6_103649131 0 chrX_143483110-chr_6103649147
0 chrX_143483005-chr6_103649292,chrX_143483110-chr6_103649131 chrX_143482988-chr6_103649147,chrX_143483004-chr6_103649293,chrX_143483110-chr6_103649291,chrX_143483110-chr6_103649053
원하는 출력:
chrX_143483005-chr6_103649292 chrX_143483110-chr_6103649147 chrX_143483004-chr6_103649293
chrX_143483110-chr_6103649147 chrX_143483005-chr6_103649292 0
0 chrX_143483005-chr6_103649292 chrX_143482988-chr6_103649147
chrX_143483005-chr6_103649292 0 chrX_143483110-chr_6103649147
0 chrX_143483005-chr6_103649292 chrX_143482988-chr6_103649147
시험을 마친:
## No. of Columns in each line.
awk '{print NF}' tt.txt
3
3
3
3
3
## operation to delete the co-ordinates affiliated with comma.
sed -e 's/\,chr[A-Z0-9]\_[0-9]-chr[A-Z0-9]\_[0-9]*.//g' tt.txt
기본적으로 "," 뒤의 좌표를 제거하고 왼손(첫 번째) 좌표만 유지하고 싶습니다.
참고: 1 이 작업에서 열은 입력과 동일합니다. 2. 쉼표로 구분된 좌표는 고정되지 않으며 임의의 열이 될 수 있습니다. 3. 염색체는 1~19, X, Y 중 어느 하나일 수 있다.
답변1
충분히 간단합니다.
$ sed -E 's/,[^ ]+//g' in
chrX_143483005-chr6_103649292 chrX_143483110-chr_6103649147 chrX_143483004-chr6_103649293
chrX_143483110-chr_6103649147 chrX_143483005-chr6_103649292 0
0 chrX_143483005-chr6_103649292 chrX_143482988-chr6_103649147
chrX_143483005-chr6_103649292 0 chrX_143483110-chr_6103649147
0 chrX_143483005-chr6_103649292 chrX_143482988-chr6_103649147
(확장) 정규 표현식은 /,[^ ]+/
공백이 아닌 문자 계열 뒤에 쉼표가 오는 모든 시퀀스와 일치합니다.
이 sed
명령은 s
첫 번째 인수(이 경우 지정된 표현식)를 두 번째 인수(이 경우 비어 있음)로 대체합니다. g
명령에 대한 옵션은 s
첫 번째 일치 항목뿐만 아니라 발견된 모든 항목을 대체한다는 의미입니다.