sed 작업이 작동하지 않거나 제가 뭔가 잘못하고 있는 것일까요?

sed 작업이 작동하지 않거나 제가 뭔가 잘못하고 있는 것일까요?

텍스트 입력:

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첫 번째 일치 항목뿐만 아니라 발견된 모든 항목을 대체한다는 의미입니다.

관련 정보