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

  免費注冊 查看新帖 |

Chinaunix

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

[文本處理] 請教利用腳本如何實現(xiàn)以下文件的分割 [復制鏈接]

論壇徽章:
0
跳轉到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2013-11-05 06:14 |只看該作者 |倒序瀏覽
本帖最后由 gigisor 于 2013-11-05 06:31 編輯

我有幾千個文件,每個文件的每一行格式均如下:

文件1:

atno    1    TW    1.0    1.0    1.0
atno    6    TW    1.0    2.0    1.0
atno   11   TW    1.0    1.0    1.0
atno    1    TW    5.0    1.0    3.0
atno    6    TW    5.0    2.0    3.0
atno   11   TW    5.0    1.0    3.0

文件2:

atno    2    TW    1.0    1.0    1.0
atno    8    TW    1.0    2.0    1.0
atno   23   TW    1.0    1.0    1.0
atno    2    TW    5.0    1.0    3.0
atno    8    TW    5.0    2.0    3.0
atno   23   TW    5.0    1.0    3.0

每個文件隔若干行會發(fā)生重復,從上面示例中第二列的數字的重復即可看出,不同文件中第二行數字的序列可能不同,但都是升序,請問有無辦法將所有文件中存在重復行的文件進行分割,例如某一文件名為sse.dat,存在兩個個重復區(qū)域,如上示例,可否將其分化為sse-1.dat sse-2.dat,并刪除sse.dat。先謝過。

論壇徽章:
29
程序設計版塊每日發(fā)帖之星
日期:2016-02-29 06:20:0015-16賽季CBA聯(lián)賽之天津
日期:2016-08-10 10:33:1115-16賽季CBA聯(lián)賽之深圳
日期:2016-08-17 15:07:2015-16賽季CBA聯(lián)賽之佛山
日期:2016-11-07 11:33:5015-16賽季CBA聯(lián)賽之廣夏
日期:2016-11-15 09:13:31CU十四周年紀念徽章
日期:2016-11-24 14:12:25極客徽章
日期:2016-12-07 14:03:4015-16賽季CBA聯(lián)賽之深圳
日期:2016-12-07 17:15:2715-16賽季CBA聯(lián)賽之北京
日期:2016-12-22 09:30:0115-16賽季CBA聯(lián)賽之深圳
日期:2016-12-22 10:49:2115-16賽季CBA聯(lián)賽之山西
日期:2017-02-10 09:05:3215-16賽季CBA聯(lián)賽之同曦
日期:2017-02-27 14:19:08
2 [報告]
發(fā)表于 2013-11-05 09:37 |只看該作者
回復 1# gigisor


    你上面有重復行么? 還是只看第2列或前3列是否有重復?

論壇徽章:
32
處女座
日期:2013-11-20 23:41:20雙子座
日期:2014-06-11 17:20:43戌狗
日期:2014-06-16 11:05:00處女座
日期:2014-07-22 17:30:47獅子座
日期:2014-07-28 15:38:17金牛座
日期:2014-08-05 16:34:01亥豬
日期:2014-08-18 13:34:25白羊座
日期:2014-09-02 15:03:55金牛座
日期:2014-11-10 10:23:58處女座
日期:2014-12-02 09:17:52程序設計版塊每日發(fā)帖之星
日期:2015-06-16 22:20:002015亞冠之塔什干火車頭
日期:2015-06-20 23:28:22
3 [報告]
發(fā)表于 2013-11-05 09:47 |只看該作者
本帖最后由 yestreenstars 于 2013-11-05 09:48 編輯

有固定周期的可以這樣做,從你提供的數據來看,固定周期為3,所以可以這么做:
  1. [root@localhost test]# ls
  2. sse.dat  test.dat
  3. [root@localhost test]# head sse.dat test.dat
  4. ==> sse.dat <==
  5. atno    1    TW    1.0    1.0    1.0
  6. atno    6    TW    1.0    2.0    1.0
  7. atno   11   TW    1.0    1.0    1.0
  8. atno    1    TW    5.0    1.0    3.0
  9. atno    6    TW    5.0    2.0    3.0
  10. atno   11   TW    5.0    1.0    3.0

  11. ==> test.dat <==
  12. atno    2    TW    1.0    1.0    1.0
  13. atno    8    TW    1.0    2.0    1.0
  14. atno   23   TW    1.0    1.0    1.0
  15. atno    2    TW    5.0    1.0    3.0
  16. atno    8    TW    5.0    2.0    3.0
  17. atno   23   TW    5.0    1.0    3.0
  18. [root@localhost test]# awk '{s=s?s"\n"$0:$0}!(FNR%3){split(FILENAME,a,".");print s > a[1]"-"++b[FILENAME]"."a[2];s=""}' *
  19. [root@localhost test]# ls
  20. sse-1.dat  sse-2.dat  sse.dat  test-1.dat  test-2.dat  test.dat
  21. [root@localhost test]# head sse-* test-*
  22. ==> sse-1.dat <==
  23. atno    1    TW    1.0    1.0    1.0
  24. atno    6    TW    1.0    2.0    1.0
  25. atno   11   TW    1.0    1.0    1.0

  26. ==> sse-2.dat <==
  27. atno    1    TW    5.0    1.0    3.0
  28. atno    6    TW    5.0    2.0    3.0
  29. atno   11   TW    5.0    1.0    3.0

  30. ==> test-1.dat <==
  31. atno    2    TW    1.0    1.0    1.0
  32. atno    8    TW    1.0    2.0    1.0
  33. atno   23   TW    1.0    1.0    1.0

  34. ==> test-2.dat <==
  35. atno    2    TW    5.0    1.0    3.0
  36. atno    8    TW    5.0    2.0    3.0
  37. atno   23   TW    5.0    1.0    3.0
  38. [root@localhost test]#
復制代碼

論壇徽章:
39
辰龍
日期:2013-08-21 15:45:192015亞冠之廣州富力
日期:2015-05-12 16:34:52亥豬
日期:2015-03-03 17:22:00申猴
日期:2015-03-03 17:21:37未羊
日期:2014-10-10 13:45:41戌狗
日期:2014-06-17 09:53:29巨蟹座
日期:2014-06-12 23:17:17雙魚座
日期:2014-06-10 12:42:44寅虎
日期:2014-06-09 12:52:172015亞冠之卡爾希納薩夫
日期:2015-05-24 15:24:35黃金圣斗士
日期:2015-12-02 17:25:0815-16賽季CBA聯(lián)賽之吉林
日期:2017-06-24 16:43:52
4 [報告]
發(fā)表于 2013-11-05 10:10 |只看該作者
gigisor 發(fā)表于 2013-11-05 06:14
我有幾千個文件,每個文件的每一行格式均如下:
"每個文件隔若干行會發(fā)生重復,從上面示例中第二列的數字的重復即可看出"
文件1:


把重復的規(guī)則和可能出現(xiàn)的情況都弄清楚了,才好下手, 一個文件中只會存在一對重復內容,還是不確定? 每對重復的內容都是相鄰的么?

論壇徽章:
32
處女座
日期:2013-11-20 23:41:20雙子座
日期:2014-06-11 17:20:43戌狗
日期:2014-06-16 11:05:00處女座
日期:2014-07-22 17:30:47獅子座
日期:2014-07-28 15:38:17金牛座
日期:2014-08-05 16:34:01亥豬
日期:2014-08-18 13:34:25白羊座
日期:2014-09-02 15:03:55金牛座
日期:2014-11-10 10:23:58處女座
日期:2014-12-02 09:17:52程序設計版塊每日發(fā)帖之星
日期:2015-06-16 22:20:002015亞冠之塔什干火車頭
日期:2015-06-20 23:28:22
5 [報告]
發(fā)表于 2013-11-05 10:14 |只看該作者
回復 4# 關陰月飛
樓主給的數據太少,確實不好下手,我也只好碰碰運氣了~

   

論壇徽章:
0
6 [報告]
發(fā)表于 2013-11-06 00:09 |只看該作者
本帖最后由 gigisor 于 2013-11-06 00:28 編輯

先謝過樓上各位,不好意思給出的信息不夠完善,現(xiàn)補充如下:

一個文件中存在的重復內容數量不確定,有的可能完全沒重復,有的可能有一對,有的可能有50對。

如果出現(xiàn)重復,每對重復的內容都是相鄰的。

一節(jié)重復的內容按照第二列數字大小升序逐行排列。

上述示例可改為:

文件1:

atno    1    TW    1.0    1.0    1.0
atno    6    TW    1.0    2.0    1.0
atno   11   TW    1.0    1.0    1.0
atno   18   TW    1.0    1.0    2.0
atno    1    TW    5.0    1.0    3.0
atno    6    TW    5.0    2.0    3.0
atno   11   TW    5.0    1.0    3.0
atno   18   TW    1.0    1.0    2.0

文件2:

atno    2    TW    1.0    1.0    1.0
atno    8    TW    1.0    2.0    1.0
atno   23   TW    1.0    1.0    1.0
atno    2    TW    5.0    1.0    3.0
atno    8    TW    5.0    2.0    3.0
atno   23   TW    5.0    1.0    3.0

我想這樣就比較清楚了。

論壇徽章:
32
處女座
日期:2013-11-20 23:41:20雙子座
日期:2014-06-11 17:20:43戌狗
日期:2014-06-16 11:05:00處女座
日期:2014-07-22 17:30:47獅子座
日期:2014-07-28 15:38:17金牛座
日期:2014-08-05 16:34:01亥豬
日期:2014-08-18 13:34:25白羊座
日期:2014-09-02 15:03:55金牛座
日期:2014-11-10 10:23:58處女座
日期:2014-12-02 09:17:52程序設計版塊每日發(fā)帖之星
日期:2015-06-16 22:20:002015亞冠之塔什干火車頭
日期:2015-06-20 23:28:22
7 [報告]
發(fā)表于 2013-11-06 09:04 |只看該作者
本帖最后由 yestreenstars 于 2013-11-06 11:26 編輯

回復 6# gigisor
感覺還是說得不是很清楚,有沒有可能是這種情況?
1
2
3
1
2
3
A
B
A
B
樓主給多點數據,數據越多,寫的腳本才能更匹配~
   

論壇徽章:
7
亥豬
日期:2013-10-10 17:00:29辰龍
日期:2013-10-12 16:23:19卯兔
日期:2013-11-18 17:01:27金牛座
日期:2014-09-09 10:17:052015七夕節(jié)徽章
日期:2015-08-21 11:06:172015亞冠之柏太陽神
日期:2015-09-25 13:56:42數據庫技術版塊每日發(fā)帖之星
日期:2016-08-06 06:20:00
8 [報告]
發(fā)表于 2013-11-06 09:26 |只看該作者
看我的可以達到要求不??
  1. awk 'BEGIN{b=1}{split(FILENAME,a,".")}{if(c>$2){close(a[1]"-"b"."a[2]);++b}c=$2;print > a[1]"-"b"."a[2]}' infile
復制代碼

論壇徽章:
93
2015年辭舊歲徽章
日期:2019-10-10 10:51:15CU大;照
日期:2014-02-21 14:21:56CU十二周年紀念徽章
日期:2020-10-15 16:55:55CU大;照
日期:2014-02-21 14:22:07羊年新春福章
日期:2019-10-10 10:51:39CU大;照
日期:2019-10-10 10:55:38季節(jié)之章:春
日期:2020-10-15 16:57:40ChinaUnix元老
日期:2019-10-10 10:54:42季節(jié)之章:冬
日期:2019-10-10 10:57:17CU大;照
日期:2014-02-21 14:22:52CU大;照
日期:2014-03-13 10:40:30CU大;照
日期:2014-02-21 14:23:15
9 [報告]
發(fā)表于 2013-11-06 09:59 |只看該作者
有沒有可能出現(xiàn)這樣的情況?即每四行重復一次,但每四行的第一二行是一樣的?
  1. atno    1    TW    1.0    1.0    1.0
  2. atno    1    TW    1.0    1.0    1.0
  3. atno    6    TW    1.0    2.0    1.0
  4. atno   11   TW    1.0    1.0    1.0
  5. atno    1    TW    5.0    1.0    3.0
  6. atno    1    TW    1.0    1.0    1.0
  7. atno    6    TW    5.0    2.0    3.0
  8. atno   11   TW    5.0    1.0    3.0
復制代碼

論壇徽章:
15
2015年辭舊歲徽章
日期:2015-03-03 16:54:15雙魚座
日期:2015-01-15 17:29:44午馬
日期:2015-01-06 17:06:51子鼠
日期:2014-11-24 10:11:13寅虎
日期:2014-08-18 07:10:55酉雞
日期:2014-04-02 12:24:51雙子座
日期:2014-04-02 12:19:44天秤座
日期:2014-03-17 11:43:36亥豬
日期:2014-03-13 08:13:51未羊
日期:2014-03-11 12:42:03白羊座
日期:2013-11-20 10:15:18CU大;照
日期:2013-04-17 11:48:45
10 [報告]
發(fā)表于 2013-11-06 10:52 |只看該作者
可能就是這么個簡單的意思吧。
  1. awk '{if ($2<n) i++;n=$2;print >FILENAME "_" i+1}' *.dat
復制代碼
碰到有$2 比前一行小,就輸出到一個新的文件。
您需要登錄后才可以回帖 登錄 | 注冊

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

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP