亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 2147 | 回復: 7
打印 上一主題 下一主題

[文本處理] 求文本處理方法 [復制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2014-07-22 09:31 |只看該作者 |倒序瀏覽
文本是這樣的,好吧,我的目的是要合并,cat之后的結(jié)果就是這樣:
#this is my file
%start
      16 |       42 |        1 | "0000000762"
      16 |       43 |        1 | "0000000763"
      16 |       44 |        1 | "0000000764"
      16 |       45 |        1 | "0000000765"
      16 |       46 |        1 | "0000000766"
      16 |       47 |        1 | "0000000767"
      16 |       48 |        1 | "0000000768"
%
I =      31
#this is my file
%start
       1 |        1 |        1 | "0000000001"
       2 |        1 |        1 | "0000000002"
       3 |        1 |        1 | "0000000003"
       4 |        1 |        1 | "0000000004"
       5 |        1 |        1 | "0000000005"
       6 |        1 |        1 | "0000000006"
       7 |        1 |        1 | "0000000007"
       8 |        1 |        1 | "0000000008"
%
I = 20
我想要的結(jié)果是這樣的:

#this is my file
%start
      16 |       42 |        1 | "0000000762"
      16 |       43 |        1 | "0000000763"
      16 |       44 |        1 | "0000000764"
      16 |       45 |        1 | "0000000765"
      16 |       46 |        1 | "0000000766"
      16 |       47 |        1 | "0000000767"
      16 |       48 |        1 | "0000000768"
       1 |       49 |        1 | "0000000769"
       2 |       49 |        1 | "0000000770"
       3 |       49 |        1 | "0000000771"
       4 |       49 |        1 | "0000000772"
       5 |       49 |        1 | "0000000773"
       6 |       49 |        1 | "0000000774"
       7 |       49 |        1 | "0000000775"
       8 |       49 |        1 | "0000000776"
%
I = 20

改動第二列和第四列,涉及到加和,由于文本量太多,我只能求助于腳本了。求問大家有什么好辦法么?謝謝了。

論壇徽章:
780
金牛座
日期:2014-02-26 17:49:58水瓶座
日期:2014-02-26 18:10:15白羊座
日期:2014-04-15 19:29:52寅虎
日期:2014-04-17 19:43:21酉雞
日期:2014-04-19 21:24:10子鼠
日期:2014-04-22 13:55:24卯兔
日期:2014-04-22 14:20:58亥豬
日期:2014-04-22 16:13:09獅子座
日期:2014-05-05 22:31:17摩羯座
日期:2014-05-06 10:32:53處女座
日期:2014-05-12 09:23:11子鼠
日期:2014-05-21 18:21:27
2 [報告]
發(fā)表于 2014-07-22 09:49 |只看該作者
本帖最后由 Herowinter 于 2014-07-22 09:49 編輯

回復 1# zsjan
I =31和I =20是固定的文本嗎?可以用來定位要操作的記錄?

   

論壇徽章:
6
處女座
日期:2014-04-02 16:07:17酉雞
日期:2014-04-14 10:09:22子鼠
日期:2014-04-17 11:57:30辰龍
日期:2014-09-01 17:14:08戌狗
日期:2014-10-28 12:25:54未羊
日期:2014-11-14 11:31:58
3 [報告]
發(fā)表于 2014-07-22 10:45 |只看該作者
  1. awk -F"[ |]+" 'NR==FNR&&$0!~/^%$/&&$0!~/^I/{print $0;a=$3;b=$5;gsub(/"/,"",b)} NR==FNR{next} $0!~/^%/&&$0!~/^I/{$3=$3+a;gsub(/"/,"",$5);$5=$5+b} FNR>1&&$0!~/^%$/&&$0!~/^I/{printf("%8d |%9d |%9d | \"%010d\"\n",$2,$3,$4,$5)} FNR>1&&$0~/^%/||$0~/^I/{print $0}' o oo
復制代碼
猜一把

論壇徽章:
145
技術(shù)圖書徽章
日期:2013-10-01 15:32:13戌狗
日期:2013-10-25 13:31:35金牛座
日期:2013-11-04 16:22:07子鼠
日期:2013-11-18 18:48:57白羊座
日期:2013-11-29 10:09:11獅子座
日期:2013-12-12 09:57:42白羊座
日期:2013-12-24 16:24:46辰龍
日期:2014-01-08 15:26:12技術(shù)圖書徽章
日期:2014-01-17 13:24:40巳蛇
日期:2014-02-18 14:32:59未羊
日期:2014-02-20 14:12:13白羊座
日期:2014-02-26 12:06:59
4 [報告]
發(fā)表于 2014-07-22 11:34 |只看該作者
回復 1# zsjan

Would you like this way ...

$ awk -F'|' '!S{print}/^%start/{S=1}/^I =/{I=$0}NF==4{gsub("\"","",$4);n2=n2==""?$2:n2+1;n4=n4==""?$4:n4+1;printf("%8d |%8d |%8d | \"%010d\"\n",$1,n2,$3,n4)}END{print "%\n"I}' FILE
#this is my file
%start
      16 |      42 |       1 | "0000000762"
      16 |      43 |       1 | "0000000763"
      16 |      44 |       1 | "0000000764"
      16 |      45 |       1 | "0000000765"
      16 |      46 |       1 | "0000000766"
      16 |      47 |       1 | "0000000767"
      16 |      48 |       1 | "0000000768"
       1 |      49 |       1 | "0000000769"
       2 |      50 |       1 | "0000000770"
       3 |      51 |       1 | "0000000771"
       4 |      52 |       1 | "0000000772"
       5 |      53 |       1 | "0000000773"
       6 |      54 |       1 | "0000000774"
       7 |      55 |       1 | "0000000775"
       8 |      56 |       1 | "0000000776"
%
I = 20

   

論壇徽章:
780
金牛座
日期:2014-02-26 17:49:58水瓶座
日期:2014-02-26 18:10:15白羊座
日期:2014-04-15 19:29:52寅虎
日期:2014-04-17 19:43:21酉雞
日期:2014-04-19 21:24:10子鼠
日期:2014-04-22 13:55:24卯兔
日期:2014-04-22 14:20:58亥豬
日期:2014-04-22 16:13:09獅子座
日期:2014-05-05 22:31:17摩羯座
日期:2014-05-06 10:32:53處女座
日期:2014-05-12 09:23:11子鼠
日期:2014-05-21 18:21:27
5 [報告]
發(fā)表于 2014-07-22 11:55 |只看該作者
本帖最后由 Herowinter 于 2014-07-22 11:58 編輯

沒樓上的大神寫得好。
回復 1# zsjan
  1. awk -F'|' 'function trim(s){gsub(/^[[:space:]]*|[[:space:]]*$/,"",s);return s} /^%[[:space:]]*$/{++n} !n&&NF==4{s1=trim($2);s2=gensub(/.*"([0-9]+).*/,"\\1",1,$4)} n&&NF==4{$0=sprintf("%8d |%9d |%9d | \042%010d\042",trim($1),s1+trim($2),trim($3),s2+gensub(/.*"([0-9]+).*/,"\\1",1,$4))} n!=1||NF==4' i
  2. #this is my file
  3. %start
  4.       16 |       42 |        1 | "0000000762"
  5.       16 |       43 |        1 | "0000000763"
  6.       16 |       44 |        1 | "0000000764"
  7.       16 |       45 |        1 | "0000000765"
  8.       16 |       46 |        1 | "0000000766"
  9.       16 |       47 |        1 | "0000000767"
  10.       16 |       48 |        1 | "0000000768"
  11.        1 |       49 |        1 | "0000000769"
  12.        2 |       49 |        1 | "0000000770"
  13.        3 |       49 |        1 | "0000000771"
  14.        4 |       49 |        1 | "0000000772"
  15.        5 |       49 |        1 | "0000000773"
  16.        6 |       49 |        1 | "0000000774"
  17.        7 |       49 |        1 | "0000000775"
  18.        8 |       49 |        1 | "0000000776"
  19. %
  20. I = 20

  21. cat i
  22. #this is my file
  23. %start
  24.       16 |       42 |        1 | "0000000762"
  25.       16 |       43 |        1 | "0000000763"
  26.       16 |       44 |        1 | "0000000764"
  27.       16 |       45 |        1 | "0000000765"
  28.       16 |       46 |        1 | "0000000766"
  29.       16 |       47 |        1 | "0000000767"
  30.       16 |       48 |        1 | "0000000768"
  31. %
  32. I = 31
  33. #this is my file
  34. %start
  35.        1 |        1 |        1 | "0000000001"
  36.        2 |        1 |        1 | "0000000002"
  37.        3 |        1 |        1 | "0000000003"
  38.        4 |        1 |        1 | "0000000004"
  39.        5 |        1 |        1 | "0000000005"
  40.        6 |        1 |        1 | "0000000006"
  41.        7 |        1 |        1 | "0000000007"
  42.        8 |        1 |        1 | "0000000008"
  43. %
  44. I = 20
復制代碼

論壇徽章:
0
6 [報告]
發(fā)表于 2014-07-22 12:30 |只看該作者
Herowinter 發(fā)表于 2014-07-22 11:55
沒樓上的大神寫得好。
回復 1# zsjan


嗯,你這個寫法很有用阿!

論壇徽章:
0
7 [報告]
發(fā)表于 2014-07-22 12:46 |只看該作者
jason680 發(fā)表于 2014-07-22 11:34
回復 1# zsjan

Would you like this way ...


能不能解釋一下n2=n2==""?$2:n2+1;這個判斷語句呢?
另外,我的第二個文件第二列是同一個數(shù),要怎么修改一下好呢?
謝謝。

論壇徽章:
780
金牛座
日期:2014-02-26 17:49:58水瓶座
日期:2014-02-26 18:10:15白羊座
日期:2014-04-15 19:29:52寅虎
日期:2014-04-17 19:43:21酉雞
日期:2014-04-19 21:24:10子鼠
日期:2014-04-22 13:55:24卯兔
日期:2014-04-22 14:20:58亥豬
日期:2014-04-22 16:13:09獅子座
日期:2014-05-05 22:31:17摩羯座
日期:2014-05-06 10:32:53處女座
日期:2014-05-12 09:23:11子鼠
日期:2014-05-21 18:21:27
8 [報告]
發(fā)表于 2014-07-22 12:49 |只看該作者
回復 7# zsjan

相當于
  1. if(n2=="")
  2.     n2=$2
  3. else
  4.     n2=n2+1
復制代碼
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP