특정 열에 탭 추가

특정 열에 탭 추가

다음 데이터가 있고 탭으로 구분되어 있지만 일부 열은 탭으로 구분되어 있지 않습니다. 데이터가 모두 탭 간격인지 확인하는 방법은 무엇입니까?

이것은 일부 데이터입니다.

rs987435    C   G   1   1   2   1   20
rs345783    C   G   1   1   1   1   01
rs955894    G   T   2   2   2   2   22
rs6088791   A   G   1   0   1   0   22
rs11180435  C   T   1   1   1   1   10
rs17571465  A   T   2   2   2   2   22
rs17011450  C   T   2   2   1   2   22
rs6919430   A   C   2   2   2   2   22
rs2342723   C   T   0   0   0   0   01
rs11992567  C   T   2   2   2   2   22

보시다시피 열 4부터 시작하는 열은 0,1,2만 가능하지만 열 8은 그렇지 않습니다. 이 숫자 사이에 탭 문자를 추가해야 합니다. Linux에서는 어떻게 해야 합니까?

답변1

Linux를 사용하고 있으므로 BSD Sed가 아닌 GNU Sed를 사용하게 되므로 다음과 같이 간단히 수행할 수 있습니다.

sed 's/.$/\t&/' file.txt

명령줄에 표시되는 출력에 만족하면 다음 플래그를 사용하여 "in-place"(즉, 파일에 다시 저장)를 실행합니다 -i.

sed -i 's/.$/\t&/' file.txt

이것이 하는 일은 각 줄의 마지막 문자 앞에 탭 문자를 삽입하는 것입니다.

답변2

모든 공백을 탭으로 바꿉니다.

tr -s " " "\t" < datafile

관련 정보