| 9 | 1/1 | 返回列表 |
| 查看: 764 | 回復(fù): 8 | ||
zhangyujin銅蟲 (正式寫手)
|
[求助]
怎樣揀出一系列文檔中每個文檔第二列的最大值
|
| 我的程序運行出來結(jié)果是這樣存放的:一個主文件夾下有十個子文件夾名字各不相同1、2、3、4……,每個子文件夾下有三十個.dat文檔名字也不相同(z_0_E_t.dat/z_2_E_t.dat……),每個文檔中有兩列數(shù)據(jù),每列有55602行。我需要把每個子文件夾中z_0_E_t.dat和z_2_E_t.dat中第二列的最大值求出來,然后把這些最大值放在一個文檔中輸出來,輸出格式是二列,第一列存放的是十個子文件夾每個文件夾中的z_0_E_t.dat文檔的第二列的最大值,第二列存放的是十個子文件夾每個文件夾中的z_2_E_t.dat文檔的第二列的最大值。哪位高手能編寫個小程序?qū)崿F(xiàn)這個功能?什么語言都可以。感激不盡啊。 |

金蟲 (小有名氣)
|
cut -d\' \' -f 2 youfile | sort |tail 記不清這幾個命令的參數(shù)了,如果不對看下幫助 基本方法是: 利用管道 cut的-d指定列與列間的分隔符,-f指定你要的列 sort將數(shù)據(jù)排序,排序貌似是升序,如果不對,加參數(shù)要求按數(shù)值或字符排 tail取最后10個 [ 發(fā)自手機版 http://www.gaoyang168.com/3g ] |
版主 (知名作家)

銅蟲 (正式寫手)

金蟲 (文壇精英)
|
使用bash腳本來做,請在linux或mac下執(zhí)行。請在主文件夾下執(zhí)行。 vim test.sh ### start of script #!/bin/bash for d in `ls -d -- */`; do cat $d/z_0_E_t.dat | awk '{print $2}' | sort -r | sed -n '1p' >> tmp cat $d/z_2_E_t.dat | awk '{print $2}' | sort -r | sed -n '1p' >> tmp done sed 'N;s/\n/ /' tmp > final.txt ### end of script |
金蟲 (文壇精英)
|
python version: 可在windows下運行。 #start of script #!/usr/bin/env python def GetMax(fs): f = open(fs, "r" ![]() max = 0 for line in f.readlines(): v = line.split()[1] if v > max: max = v f.close() return max if __name__ == "__main__": m1 = [] m2 = [] import sys main_dir= sys.argv[1] f = open("result.txt", "w+" ![]() for i in range(1, 11): m1 = GetMax("%s/%d.f90.out/z_0_E_t.dat"%(main_dir, i)) m2 = GetMax("%s/%d.f90.out/z_2_E_t.dat"%(main_dir, i)) f.write("%d %d\n"%(m1, m2)) f.close() #end of script 運行方法:在命令行下運行 python process.py "C:/" |
金蟲 (文壇精英)
銅蟲 (正式寫手)
|
我們的集群是每個人一個賬戶,統(tǒng)一管理的,所以提交任務(wù)需要先建立一個臨時目錄,、計算相關(guān)信息存放在臨時目錄里,計算完了再刪掉。下面的腳本是一個可執(zhí)行的腳本,實現(xiàn)的是把bin文件夾里的若干個程序一起提交,按照順序一個個的執(zhí)行。我想把你給的那個尋找最大值并且輸出的腳本嫁接到這個可執(zhí)行的腳本上來,這樣才可以用,但是改了很多地方都有問題,沒有final.txt產(chǎn)生。因為剛接觸linux語言,還不是太靈活,可能是我遺漏了需要改動的地方,麻煩你幫忙看一下怎么嫁接這兩個腳本。 #!/bin/sh #PBS -N Others #PBS -l nodes=1:ppn=1 #PBS -l walltime=200:00:00 #PBS -q OTHERS #PBS -j oe NPROCS=`wc -l < $PBS_NODEFILE` mkdir -p /tmp/$PBS_JOBID cp -r $PBS_O_WORKDIR/* /tmp/$PBS_JOBID cd /tmp/$PBS_JOBID for ExeFile in $(ls /tmp/$PBS_JOBID/bin) do mkdir -p /tmp/$PBS_JOBID/Result/$ExeFile.out cp /tmp/$PBS_JOBID/bin/$ExeFile /tmp/$PBS_JOBID/Result/$ExeFile.out cd /tmp/$PBS_JOBID/Result/$ExeFile.out ifort $ExeFile /tmp/$PBS_JOBID/Result/$ExeFile.out/a.out done cp -r /tmp/$PBS_JOBID/* $PBS_O_WORKDIR rm -rf /tmp/$PBS_JOBID |

金蟲 (文壇精英)
|
首先目錄結(jié)構(gòu): $PBS_O_WORKDIR +--- bin | +---test.sh +-- data +---1.f90.out +--- xxx.dat +--- ... +---2.f90.out +.... vim test.sh ### start of script #!/bin/bash cd ../data for d in `ls -d -- */`; do cat $d/z_0_E_t.dat | awk '{print $2}' | sort -r | sed -n '1p' >> tmp cat $d/z_2_E_t.dat | awk '{print $2}' | sort -r | sed -n '1p' >> tmp done sed 'N;s/\n/ /' tmp > final.txt ### end of script |
| 9 | 1/1 | 返回列表 |
| 最具人氣熱帖推薦 [查看全部] | 作者 | 回/看 | 最后發(fā)表 | |
|---|---|---|---|---|
|
[考研] 291求調(diào)劑 +5 | 孅華 2026-03-22 | 5/250 |
|
|---|---|---|---|---|
|
[考研] 328求調(diào)劑,英語六級551,有科研經(jīng)歷 +6 | 生物工程調(diào)劑 2026-03-17 | 10/500 |
|
|
[考研] 293求調(diào)劑 +12 | zjl的號 2026-03-16 | 17/850 |
|
|
[考研] 311求調(diào)劑 +3 | 26研0 2026-03-20 | 3/150 |
|
|
[考研] 303求調(diào)劑 +5 | 安憶靈 2026-03-22 | 6/300 |
|
|
[考博] 招收博士1-2人 +3 | QGZDSYS 2026-03-18 | 4/200 |
|
|
[考研] 初試 317 +7 | 半拉月丙 2026-03-20 | 7/350 |
|
|
[考研] 333求調(diào)劑 +5 | 87639 2026-03-21 | 7/350 |
|
|
[考研] 求調(diào)劑 +4 | 要好好無聊 2026-03-21 | 4/200 |
|
|
[考研] 313求調(diào)劑 +4 | 肆叁貳壹22 2026-03-19 | 4/200 |
|
|
[考研] 求調(diào)劑 +3 | .m.. 2026-03-21 | 4/200 |
|
|
[考研] 346求調(diào)劑[0856] +4 | WayneLim327 2026-03-16 | 7/350 |
|
|
[考研] 070300化學(xué)319求調(diào)劑 +7 | 錦鯉0909 2026-03-17 | 7/350 |
|
|
[考研] 求調(diào)劑 +3 | Ma_xt 2026-03-17 | 3/150 |
|
|
[考研] 288求調(diào)劑 +16 | 于海海海海 2026-03-19 | 16/800 |
|
|
[考研] 一志愿蘇州大學(xué)材料求調(diào)劑,總分315(英一) +5 | sbdksD 2026-03-19 | 5/250 |
|
|
[考研] 085600材料與化工調(diào)劑 324分 +10 | llllkkkhh 2026-03-18 | 12/600 |
|
|
[考研] 材料考研調(diào)劑 +3 | xwt。 2026-03-19 | 3/150 |
|
|
[考研] 0703化學(xué)調(diào)劑 +3 | 妮妮ninicgb 2026-03-17 | 3/150 |
|
|
[考研] 一志愿蘇州大學(xué)材料工程(085601)專碩有科研經(jīng)歷三項國獎兩個實用型專利一項省級立項 +6 | 大火山小火山 2026-03-16 | 8/400 |
|