각 숫자와 문자 사이에 탭을 추가하거나 문자열의 다른 곳에 탭과 공백을 추가/제거하는 방법에 대한 매우 유용한 게시물을 많이 읽었지만 이러한 솔루션을 현재 질문에 적용하는 데 어려움을 겪고 있으므로 다음과 같다고 생각했습니다. 스택에 추가할 가치가 있습니다! 나는 다음과 같은 많은 유전 데이터를 가지고 있습니다.
chr1 1324000 1325000tgagggtctgctg...
chr1 1318000 1319000gggactgcagctg...
등.
마지막 숫자와 첫 글자 사이에 탭 문자를 추가하는 방법이 있나요? 시퀀스의 길이는 다양하므로 탭이 항상 같은 위치에 있는 것은 아닙니다. 또한 첫 번째 숫자 집합이 항상 0으로 끝나는 것은 아닙니다. 그러나 탭 문자는 항상 마지막 숫자 뒤에 옵니다. 제 생각엔 다음과 같을 것 같아요:
sed -e 's/\([[0-9]\+]\)/[\t/'
그러나 물론 그것은 작동하지 않습니다. 이 위치에 탭 문자를 배치하도록 sed에게 어떻게 지시합니까?
원하는 출력:
chr1 1324000 1325000 tgagggtctgctg...
chr1 1318000 1319000 gggactgcagctg...
답변1
sed -E 's/([0-9])([acgtACGT])/\1\t\2/' file
일하다! 고마워요 사이러스.
답변2
$ sed 's/[^0-9]*$/\t&/' file
chr1 1324000 1325000 tgagggtctgctg...
chr1 1318000 1319000 gggactgcagctg...