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

  免費注冊 查看新帖 |

Chinaunix

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

[文本處理] 求助:shell讀取文件內的內容 [復制鏈接]

論壇徽章:
3
2015亞冠之布里斯班獅吼
日期:2015-06-25 18:46:20程序設計版塊每日發(fā)帖之星
日期:2015-09-17 06:20:0015-16賽季CBA聯(lián)賽之江蘇
日期:2017-01-09 21:37:58
跳轉到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2015-06-15 20:15 |只看該作者 |倒序瀏覽
本帖最后由 tengfei0311 于 2015-06-15 20:27 編輯

第一個文件內數據:1.dat
101.535599     25.029301
100.735100     23.501900

35.0   3.591
36.0   3.618
37.0   3.647
38.0   3.681
39.0   3.719
40.0   3.752

第二個數據文件:2.dat
101.860703     25.689400
99.698402     27.823200

41.0   3.698
42.0   3.715
43.0   3.732
44.0   3.747
45.0   3.762
46.0   3.777
47.0   3.792
48.0   3.807
49.0   3.820
50.0   3.834

第三個文件數據:3.dat
102.143997     24.700199
103.717903     27.322100

30.0   3.562
31.0   3.557
32.0   3.562
33.0   3.575
34.0   3.595
35.0   3.617
36.0   3.639
37.0   3.658
38.0   3.681
39.0   3.708
40.0   3.735



我現在有600多個這樣的文件,現在以3個文件為例。
假如我現在要搜索每一個文件里面35.0這一行的值,如果文件有35.0的值,把35.0后面一個值拷貝到新的文件中,并把頭兩行拷貝在新文件中。如果沒有這個35.0就跳過這個文件,不做任何操作。

例如:第一個文件里面有35.0的值,就拷貝出來,形成新的格式如下(新的文件名:35.txt):
25.029301  101.535599  23.501900  100.735100  3.591  1   (第一個文件中的數據,如35.0這個后面有值的,在后面全部加1(指紅色的1))
第二個文件沒有就跳過 不拷貝
24.700199  102.143997  27.322100  103.717903  3.617 1   (第三個文件中的數據)
...
...

就這樣形成一個新的文件,該怎么實現bash shell腳本啊。謝謝!

論壇徽章:
0
2 [報告]
發(fā)表于 2015-06-15 20:59 |只看該作者
本帖最后由 bianlimit 于 2015-06-15 21:01 編輯

回復 1# tengfei0311
  1. $ awk 'FNR<=2{a[FNR]=$2" "$1};$1=="35.0"{print a[1],a[2],$2,"1"}' 1 2 3
  2. 25.029301 101.535599 23.501900 100.735100 3.591 1
  3. 24.700199 102.143997 27.322100 103.717903 3.617 1
復制代碼
剛才格式不對, 已改

論壇徽章:
20
卯兔
日期:2015-01-26 22:05:142015亞冠之薩濟拖拉機
日期:2015-09-10 15:15:282015亞冠之阿爾希拉爾
日期:2015-09-25 17:37:53程序設計版塊每日發(fā)帖之星
日期:2015-10-03 06:20:00程序設計版塊每日發(fā)帖之星
日期:2015-12-09 06:20:00CU十四周年紀念徽章
日期:2015-12-17 09:07:15程序設計版塊每日發(fā)帖之星
日期:2015-12-25 06:20:34程序設計版塊每日發(fā)帖之星
日期:2015-12-25 06:20:34程序設計版塊每日發(fā)帖之星
日期:2015-12-25 06:20:342015亞冠之廣州富力
日期:2015-08-27 19:29:56每日論壇發(fā)貼之星
日期:2015-08-26 06:20:002015亞冠之阿爾希拉爾
日期:2015-05-18 17:26:27
3 [報告]
發(fā)表于 2015-06-15 21:23 |只看該作者
回復 1# tengfei0311
  1. awk 'f!=FILENAME{s=""}FNR<3{f=FILENAME;for(i=1;i<=NF;i++)s=s?s OFS $i:$i}$1=="35.0"{print s,$2,"1" > FILENAME"_35.txt";}' 1 2 3
復制代碼
不明后面的那個1是什么?每一個文件中是否會有多個35.0行?

論壇徽章:
3
2015亞冠之布里斯班獅吼
日期:2015-06-25 18:46:20程序設計版塊每日發(fā)帖之星
日期:2015-09-17 06:20:0015-16賽季CBA聯(lián)賽之江蘇
日期:2017-01-09 21:37:58
4 [報告]
發(fā)表于 2015-06-15 21:43 |只看該作者
回復 2# bianlimit

謝謝您,你這個代碼是對的。
35.0是時間,指35s,后面是35s對應的值,如果有值就是1。這個1就是這個意思,是數據反演的一個格式,必須要加一個1.呵呵

   

論壇徽章:
3
2015亞冠之布里斯班獅吼
日期:2015-06-25 18:46:20程序設計版塊每日發(fā)帖之星
日期:2015-09-17 06:20:0015-16賽季CBA聯(lián)賽之江蘇
日期:2017-01-09 21:37:58
5 [報告]
發(fā)表于 2015-06-15 21:49 |只看該作者
回復 3# songyc_2015

謝謝,我每個文件都只有一個35s,這個第一列是時間。一樓大哥是對的。

   

論壇徽章:
9
寅虎
日期:2013-12-02 12:49:22巨蟹座
日期:2014-07-18 18:13:34卯兔
日期:2014-07-25 14:43:08子鼠
日期:2014-07-26 10:10:51酉雞
日期:2014-07-31 15:09:562015亞冠之本尤德科
日期:2015-05-19 09:27:382015亞冠之卡爾希納薩夫
日期:2015-06-20 10:30:212015亞冠之阿爾納斯爾
日期:2015-07-01 20:46:062015亞冠之城南
日期:2015-07-15 21:12:00
6 [報告]
發(fā)表于 2015-06-16 09:58 |只看該作者
本帖最后由 lifayi2008 于 2015-06-16 10:25 編輯
  1. #!/bin/bash

  2. for i in $(ls *.txt);do
  3.         a=$(grep "^35.0" $i)
  4.         if [ -n "$a" ];then
  5.                 head -n 2 $i | while read a b;do
  6.                         echo -n $b" "$a" "
  7.                 done
  8.                 echo ${a#* }" 1"
  9.         fi
  10. done
復制代碼

論壇徽章:
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
7 [報告]
發(fā)表于 2015-06-16 11:47 |只看該作者
  1. awk 'FNR==1{if(n!=0){str=str!=""?str"\n"s" "n:s" "n};s="";s=$2" "$1;n=0} FNR==2{s=s" "$2" "$1} $1=="35.0"{s=s" "$2;n++}END{if(n==1){str=str!=""?str"\n"s" "n:s" "n};print str}' `ls *.dat`
復制代碼

論壇徽章:
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
8 [報告]
發(fā)表于 2015-06-16 11:54 |只看該作者
  1. awk 'FNR<3{a[FILENAME]=a[FILENAME]FS$1FS$2;next} $1=="35.0"{print a[FILENAME],$2,1;nextfile}'  urfiles  >out_file
復制代碼

論壇徽章:
3
2015亞冠之布里斯班獅吼
日期:2015-06-25 18:46:20程序設計版塊每日發(fā)帖之星
日期:2015-09-17 06:20:0015-16賽季CBA聯(lián)賽之江蘇
日期:2017-01-09 21:37:58
9
發(fā)表于 2015-06-16 13:42
回復 6# lifayi2008

謝謝,已經搞定了,感謝你們的幫助。

   

論壇徽章:
3
2015亞冠之布里斯班獅吼
日期:2015-06-25 18:46:20程序設計版塊每日發(fā)帖之星
日期:2015-09-17 06:20:0015-16賽季CBA聯(lián)賽之江蘇
日期:2017-01-09 21:37:58
10 [報告]
發(fā)表于 2015-06-16 13:43 |只看該作者
謝謝,已經搞定了回復 7# rulebook


   
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(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