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