数値とnull値のリストがあります。 null値がリストsort
の終わりに達するようにinを使用してソートする方法GNUコアツール?
入力サンプル列(input.data)
0.9000
23
1
2
5
-0.9000
-23
-1
-2
-5
を使用しようとすると、sort -g input.data
出力は次のようになります。
<NULL>
<NULL>
<NULL>
-23
-5
-2
-1
-0.9000
0.9000
1
2
5
23
ここでは、NULL値が一番上に配置されます。リストの末尾にnull値を入れることはできますか?次を期待してください:
-23
-5
-2
-1
-0.9000
0.9000
1
2
5
23
<NULL>
<NULL>
<NULL>
編集:下部にnull値を入れる目的は、データセットをソートし、一番下にnull値を持つ行を配置することです。
これは私が期待していたもので、
| Sample Input || Current output || Expected output |
|-------------------------------||-------------------------------||----------------------------|
| 2 0.9000 value 1 || 11 value 10 || 10 -23 value 9 |
| 3 23 value 2 || 4 value 3 || 14 -5 value 13 |
| 4 value 3 || 8 value 7 || 13 -2 value 12 |
| 5 1 value 4 || 10 -23 value 9 || 12 -1 value 11 |
| 6 2 value 5 || 14 -5 value 13 || 9 -0.9000 value 8 |
| 7 5 value 6 || 13 -2 value 12 || 2 0.9000 value 1 |
| 8 value 7 || 12 -1 value 11 || 5 1 value 4 |
| 9 -0.9000 value 8 || 9 -0.9000 value 8 || 6 2 value 5 |
| 10 -23 value 9 || 2 0.9000 value 1 || 7 5 value 6 |
| 11 value 10 || 5 1 value 4 || 3 23 value 2 |
| 12 -1 value 11 || 6 2 value 5 || 11 value 10 |
| 13 -2 value 12 || 7 5 value 6 || 4 value 3 |
| 14 -5 value 13 || 3 23 value 2 || 8 value 7 |
ベストアンサー1
適切なポストプロセッサを使用して結果を送信できます。これは私がsedを使って書いたものです。
#!/bin/sed -f
# Move any null into hold space
/^$/{
H
d
}
# Insert nulls after last line
$G
# Delete an extra newline this introduces
$s/\n//
sort
空白行の代わりに書き込む場合は、<NULL>
モードを/^$/
に変更する必要があります/^<NULL>$/
。
デモ
sort -g <<EOF | ./475768.sed
0.9000
23
1
2
5
-0.9000
-23
-1
-2
-5
EOF
-23
-5
-2
-1
-0.9000
0.9000
1
2
5
23