서로 다른 구분 기호를 사용하여 서로 다른 필드 연결

서로 다른 구분 기호를 사용하여 서로 다른 필드 연결

다음과 같이 탭으로 구분된 파일이 있습니다.

chr1    53736473        54175786
chr1    56861276        56876438
chr1    57512145        57512200

다음과 같이 세 가지 필드 결과를 연결하고 싶습니다.

chr1:53736473-54175786
chr1:56861276-56876438
chr1:57512145-57512200

나는 그것을 시도했지만 paste -d ':-' file분명히 작동하지 않습니다. 누구든지 도와줄 수 있나요?

이상적으로는 간단한 유닉스 명령을 사용하는 것입니다. 고급 언어를 사용하는 것이 상당히 쉽다는 것을 알고 있습니다.

답변1

sed를 사용하세요:

$ sed 's/\(.*\)\t\(.*\)\t/\1:\2-/' file

chr1:53736473-54175786
chr1:56861276-56876438
chr1:57512145-57512200

인쇄:

printf "%s:%s-%s\n" $(< file)

chr1:53736473-54175786
chr1:56861276-56876438
chr1:57512145-57512200

답변2

귀하의 예를 들어,

awk '{print $1":"$2"-"$3}' your_file

작동하지만 항상 3개의 필드가 있다고 가정합니다.

답변3

두 가지 표현식을 사용할 수 있습니다 sed.

sed -e "s/\t/,/" -e "s/\t/-/" your_file

답변4

그리고 :pasteprintf

$ printf '%s\n%s\n%s\n' $(cat file) | paste -sd ':-\n' -
chr1:53736473-54175786
chr1:56861276-56876438
chr1:57512145-57512200

관련 정보