藍森林首頁 | 返回主頁 | 本站地圖 | 站內搜索 | 聯繫信箱 |
 您目前的位置:首頁 > 自由軟件 > 技術交流 > 應用編程


    

藍森林 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 來分隔。



Copyright © 1999-2000 LSLNET.COM. All rights reserved. 藍森林網站 版權所有。 E-mail : webmaster@lslnet.com