Bash - 最初の文字ではなく文字で並べ替える

Bash - 最初の文字ではなく文字で並べ替える

最初の列でファイルを並べ替えたいのですが、5 文字目から並べ替えを開始する必要があります。どうすればいいでしょうか?

私のファイル:

"TTTTCTTACA"            1       1
"TTTTCTTACC"                    1
"TTTTCTTACT"    1       1
"TTTTCTTAGC"    1
"TTTTCTTATT"                    2
"TTTTCTTCAA"    1               1       1
"TTTTCTTCAG"    1               2       1
"TTTTCTTCAT"            1       2       2
"TTTTCTTCCT"                            2
"TTTTCTTCGG"                    2       2
"TTTTCTTCTA"                            1
"TTTTCTTCTG"            1
"TTTTCTTCTT"    1                       2
"TTTTCTTGAA"            1
"TTTTCTTGCT"    1               1       1
"TTTTCTTTAA"    1
"TTTTCTTTAG"            1       1
"TTTTCTTTCT"    1
"TTTTCTTTGC"    1
"TTTTCTTTGG"            1       1
"TTTTCTTTGT"    1       1       2       1
"TTTTCTTTTA"    1

やってみた:

sort -k1,1 file | uniq -s 6 -w 5 

もちろん、それは機能しません。おそらくソートにいくつかのフラグがあるのでしょうが、見つけられませんでした。何かアイデアはありますか?

答え1

要約

sort -k1.5 file | uniq -s 6 -w 5


説明

私のソートは GNU coreutils 8.22 です。私のソートのマニュアルページには次のように記載されています:

KEYDEF is F[.C][OPTS][,F[.C][OPTS]] for start and stop position, where F is a field number and  C
       a  character  position  in  the  field;  both are origin 1, and the stop position defaults to the
       line's end.

したがって、現在のソート コマンドでは、sort -k1,1 file最初の単語から最初の単語までをソートとして使用します。

必要なのは次のようになります (とにかく sort コマンドの場合):

sort -k1.5 file | uniq -s 6 -w 5

これにより、最初の単語の 5 番目の文字が使用されます。これが目的のとおりです。

答え2

$sort -k2 ファイル

"TTTTCTTCTA"                            1
"TTTTCTTCCT"                            2
"TTTTCTTACC"                    1
"TTTTCTTATT"                    2
"TTTTCTTCGG"                    2       2
"TTTTCTTCTG"            1
"TTTTCTTGAA"            1
"TTTTCTTACA"            1       1
"TTTTCTTTAG"            1       1
"TTTTCTTTGG"            1       1
"TTTTCTTCAT"            1       2       2
"TTTTCTTAGC"    1
"TTTTCTTTAA"    1
"TTTTCTTTCT"    1
"TTTTCTTTGC"    1
"TTTTCTTTTA"    1
"TTTTCTTCTT"    1                       2
"TTTTCTTCAA"    1               1       1
"TTTTCTTGCT"    1               1       1
"TTTTCTTCAG"    1               2       1
"TTTTCTTACT"    1       1
"TTTTCTTTGT"    1       1       2       1

$sort -k2 ファイル | uniq -f 1

"TTTTCTTCTA"                            1
"TTTTCTTCCT"                            2
"TTTTCTTACC"                    1
"TTTTCTTATT"                    2
"TTTTCTTCGG"                    2       2
"TTTTCTTCTG"            1
"TTTTCTTACA"            1       1
"TTTTCTTCAT"            1       2       2
"TTTTCTTAGC"    1
"TTTTCTTCTT"    1                       2
"TTTTCTTCAA"    1               1       1
"TTTTCTTCAG"    1               2       1
"TTTTCTTACT"    1       1
"TTTTCTTTGT"    1       1       2       1

関連情報