1

私はプログラミングの初心者なので、質問はおそらく些細なことです。

私はから取得したい:

1   sth
2   sth
3   sth
4   sth
3   sth
2   sth
2   sth

に:

1 sth

2 sth
2 sth 
2 sth

3 sth
3 sth

4 sth

これは、gnuplot がヒートマップに必要とする形式です。: を使用して行の最初の数字でデータを並べ替えることができることは知っていますがsort -n "datafile"、すべてをブロックに分割するにはどうすればよいでしょうか? ありがとう。

4

2 に答える 2

4

この種のことは次のとおりです。

$ sort -n file | awk '{if (a!=$1) {print ""} a=$1}1'

1   sth

2   sth
2   sth
2   sth

3   sth
3   sth

4   sth

説明

  • sort -n fileすでに使用しているので、明らかです。
  • awk '{if (a!=$1) {print ""} a=$1}1'
    • ある行と次の行の最初のフィールドが異なる場合は常に、新しい行を出力します。
    • これは、最初のフィールド値 ( $1) を変数に保存することによって実現されますa
    • {}1条件は各行を出力します。
于 2013-08-05T13:19:54.400 に答える
2

Perl ソリューション:

sort -n datafile | perl -ape 'print "\n" if defined $previous and $F[0] != $previous; $previous = $F[0]'
于 2013-08-05T13:19:00.613 に答える