|
藍森林 http://www.lslnet.com 2006年6月26日 11:18
請教如何用Shell刪除一行{和}之間的,
如下面一行
0, 211548, CUP, BSS:1/BTSEP:54/RACKP:0/CUP:7, equipmentAlarm, 16:02:42 14/06/2005, Processor Problem, Unsuccessful board recovery (20488), MINOR(3), T_MORE_SEVERE(2), -, 49, {up {high {integer 48}}}, 585, {Test the addressed module(s). (181),Replace the addressed module(s), consult the corresponding maintenance manual for details. (180)}, 2561, H'6261 H'6563 H'656e H'3166 H'016a,H'0506 H'0e10 H'022a H'ffff H'ffff,H'ffff H'ffff H'ffff H'ffff H'ffff, 01-01-15-01-45-00_03-09-24, "SanZaoJiChang4"/RACKP:0/CUP:7, -, zhjks, , 16:39:17 14/06/2005, maintenanceActionRecommended, active (minor), -
每一列應該是以逗號,來分割的,用{ }括起來的應該算是一列,但由於{}裡面也會出現逗號, 造成數據入數據庫時有誤,請教各位大蝦,有沒有辦法處理? |
請教如何用Shell刪除一行{和}之間的,
[code]awk 'BEGIN{FS=OFS="";a=0}
{for (i=1;i<=NF;i++)
{ if ($i=="{") a++;
if ($i=="}") a--;
if ($i=="," && a==0) $i=";"
}
}' file[/code]
這裡假定你的文本中沒有;號,把{}外的,號轉換成; |
請教如何用Shell刪除一行{和}之間的,
謝謝版主,
#!/bin/awk
BEGIN{FS=OFS="";a=0}
{for (i=1;i<=NF;i++)
{ if ($i=="{") a++;
if ($i=="}") a--;
if ( $i=="," && a==0)
$i="\t";
}
print $0
}
我改成tab 來分隔。 |
| |