NxNテーブルに最後の列を入れようとしましたが、ゼロ値がありません。テーブルにアクセスするにはawk / xargを使用できますが、ゼロが欠けている必要がありますか?最初の2つの列はソースデータファイルの識別子にすぎません。この場合、最初の列は1から2、2番目の列は1から5、最後の列は欠落している0を挿入する必要がある実際のデータです。識別子の長さは常に対応する行と列と同じです。実際には1000行のデータが存在しますが、上記の例は単純化された例であり、実際のデータセットに適しています。
編集:明確にするために、1000は最初の列の範囲が1〜1000で、2番目の列の範囲も1〜1000であることを意味します。しかし、3番目の列にゼロ値を追加したい行がありません。ただし、以下の例では、可能であればより大きなファイルにも可能だと思います。
データセット
1 1 5
1 2 4
1 4 2
2 1 5
2 2 6
2 3 5
予測データセット
1 1 5
1 2 4
1 3 0
1 4 2
1 5 0
2 1 5
2 2 6
2 3 5
2 4 0
2 5 0
ここで提案を使ってPythonを使ってみました。クレジットヘマイル
with open('test.sum') as f:
check = 0
for line in f:
if int(line.split()[1]) == check + 1:
check = int(line.split()[1])
print line.rstrip()
else:
check = int(line.split()[1])
print int(line.split()[1]) - 1, '\t0'
print line.rstrip()
print int(line.split()[1]) + 1, '\t0'
print int(line.split()[1]) + 2, '\t0'
しかし、1と2が交差する行(最初の列)の間に0を追加しているように見え、列3では機能しないようです。しかし、awkまたはより簡単なアイデアは許可されています!
助けてくれてありがとう!
ベストアンサー1
おそらく1000x1000行の最高のパフォーマンスではありませんが、作業が完了し、理解するのは非常に簡単です。
for i in {1..2}; do
for j in {1..5}; do
grep "^$i[[:blank:]]*$j" file || printf '%s\t%s\t0\n' $i $j
done
done