以下のようにseqファイルがあります。
ATCGTTTCTCAGCCTTTTGGCAAGACCAAGTGTAGTATCTGTTCTTATCAGATATTGGTATCTGCAGGCACTCCTGGAACCAAT
ATCACTTCTCAACCTTTTGACTAAGATCAAGTGTAATATCTATCTTTATCAGTTTAATATCTGAGATCTCCTTTATCTGAGGACAATATATTTAATGGATTTTTGGAACAGAGAGAAGGAATAGGAGCTTGTCCTGTCCACTCCATGCATTGACCTGGTATTGCAGGACCTCCAGAAACACCACCCCCTCC
ACGCATTATCCGCCTATTGGCTAAAAACAAATGTAGTATCTGTTCCTATCAGTTAAAGCATCAAATGTGGTCTCTAAGTTCAGGGAATTAAATTAATATTTGGAATTGGGAGATGGTTTGGGAGCTTGCTCTATCCTCTCCATGCCTCAGCATGTAATTGCAATGCTTTCAGGAGTGGTGCATTCCTT
3行あります。各行の各文字をタブで区切って別のファイルに保存したいと思います。私は何をすべきですか?
答え1
あなたの意図を正しく理解したら、次のことを行います。
sed -e 's/./&\t/g' -e $'s/\t$//' file
2番目の交換は、行末のタブを削除します。
答え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
機能しません。これは、すべてのフィールドが印刷される前にすべての2つのフィールドの間に挿入を引き起こす副作用がありますawk
。OFS
答え4
私はあなたがfold
これを試すべきだと思います:
tr \\n \\r <infile | fold -w1 | tr '\r\n' '\n\t' >outfile
ストリーム内のewline文字を戻りに置き換えてfold
入力を前処理しています。入力の各列(各大文字)に対して1つのewline文字を印刷しますが、戻り時にカウンタをリセットするため、最終後処理でewlineをabsに変換するときに出力に追加のab文字はありません。出力は3行です。各文字の後にはab文字が続きますが、各行の最後の文字です。tr
\n
\r
fold
\n
\r
tr
fold
\n
\t
\t
\t