아래와 같이 seq 파일이 있습니다.
ATCGTTTCTCAGCCTTTTGGCAAGACCAAGTGTAGTATCTGTTCTTATCAGATATTGGTATCTGCAGGCACTCCTGGAACCAAT
ATCACTTCTCAACCTTTTGACTAAGATCAAGTGTAATATCTATCTTTATCAGTTTAATATCTGAGATCTCCTTTATCTGAGGACAATATATTTAATGGATTTTTGGAACAGAGAGAAGGAATAGGAGCTTGTCCTGTCCACTCCATGCATTGACCTGGTATTGCAGGACCTCCAGAAACACCACCCCCTCC
ACGCATTATCCGCCTATTGGCTAAAAACAAATGTAGTATCTGTTCCTATCAGTTAAAGCATCAAATGTGGTCTCTAAGTTCAGGGAATTAAATTAATATTTGGAATTGGGAGATGGTTTGGGAGCTTGCTCTATCCTCTCCATGCCTCAGCATGTAATTGCAATGCTTTCAGGAGTGGTGCATTCCTT
3줄이 있습니다. 각 줄의 각 문자를 탭으로 구분한 다음 다른 파일에 저장하고 싶습니다. 나는 무엇을 해야 합니까?
답변1
귀하의 의도를 올바르게 이해했다면 다음을 수행하십시오.
sed -e 's/./&\t/g' -e $'s/\t$//' file
두 번째 교체는 줄 끝의 탭을 제거합니다.
답변2
다음을 사용하여 이 작업을 수행해 보세요.진주:
perl -ne 'print join "\t", split //' file > new_file
답변3
존재하다 awk
:
awk -F '' -vOFS='\t' '{$1=$1}1' file > new_file
{$1=$1}1
이 관용어를 빌려왔습니다답변다른 질문 중 하나입니다.
이렇게 하면 필드 구분 기호가 비어 있음( -F ''
)으로 설정됩니다. 이는 각 레코드가 문자 단위로 읽혀진다는 의미입니다. 출력 필드 구분 기호는 탭( -vOFS='\t'
)으로 설정되어 있으며, (내가 아는 한) 관용구 {$1=$1}1
는 작동하지 않습니다. 이는 모든 필드가 인쇄되기 전에 모든 두 필드 사이에 삽입을 일으키는 부작용이 있습니다 awk
.OFS
답변4
나는 당신이 fold
이것을 시도해야한다고 생각합니다 :
tr \\n \\r <infile | fold -w1 | tr '\r\n' '\n\t' >outfile
스트림 내의 ewline 문자를 반환으로 대체하여 fold
입력을 전처리하고 있습니다 . 입력의 각 열(각 대문자)에 대해 하나의 ewline 문자를 인쇄하지만 반환 시 카운터를 재설정하므로 최종 후처리에서 ewline을 abs로 변환할 때 출력에 추가 ab 문자가 없습니다. 출력은 세 줄입니다. 각 문자 뒤에는 ab 문자가 오지만 각 줄의 마지막 문자입니다.tr
\n
\r
fold
\n
\r
tr
fold
\n
\t
\t
\t