入力:
Process1 |5f|03/29/13 15:32:59
Process1 |6f|03/29/13 17:59:03
Pro cess1 |s7|03/29/13 17:59:05
Pro cess1 |1234|03/29/13 20:33:43
Pro cess1 |L|03/29/13 20:33:54
A Pro cess |45g|03/29/13 20:34:59
A Pro cess |f4|03/29/13 21:10:22
B Pro cess |Es|03/30/13 00:11:25
B Pro cess |23|03/30/13 00:47:20
B Pro cess |E23|03/30/13 01:03:07
期待される出力:
Process1 |5f|03/29/13 15:32:59
|6f|03/29/13 17:59:03
Pro cess1|s7|03/29/13 17:59:05
|1234|03/29/13 20:33:43
|L|03/29/13 20:33:54
A Pro cess |45g|03/29/13 20:34:59
|f4|03/29/13 21:10:22
B Pro cess |Es|03/30/13 00:11:25
|23|03/30/13 00:47:20
|E23|03/30/13 01:03:07
ロジック : 1 列目のインスタンスを 1 つだけ残し、他のインスタンスを空白に置き換えます
私はこれを試しましたが、うまくいきませんでした(以下のコードをループに入れます):
sed -e 's/Process1/ /g' -e 's/ /Process1/1' Input
(Process1 を「-」に置き換えてから、「-」の最初のインスタンスを再度 Process1 に置き換えます。
「cnicutar」で与えられたように、awkを次のように変更しました:
awk -F "|" '{a[$1]++; if (a[$1] > 1) $1=""; print;}' ファイル
abv からの出力:
Process1 |5f|03/29/13 15:32:59
6f 03/29/13 17:59:03
Pro cess1 |s7|03/29/13 17:59:05
1234 03/29/13 20:33:43
L 03/29/13 20:33:54
A Process |45g|03/29/13 20:34:59
f4 03/29/13 21:10:22
B Pro cess |Es|03/30/13 00:11:25
23 03/30/13 00:47:20
E23 03/30/13 01:03:07
目的の出力 (挿入 |)
Process1 |5f|03/29/13 15:32:59
|6f|03/29/13 17:59:03
Pro cess1 |s7|03/29/13 17:59:05
|1234|03/29/13 20:33:43
|L|03/29/13 20:33:54
A Process |45g|03/29/13 20:34:59
|f4|03/29/13 21:10:22
B Pro cess |Es|03/30/13 00:11:25
|23 | 03/30/13 00:47:20
|E23| 03/30/13 01:03:07