2015-04-05 130 views
0

一審我有2個.dat文件:awk腳本打印字符串

YCSB Client 0.1 
Command line: -db com.yahoo.ycsb.db.MongoDbClient -s -P /home/james/YCSB/workloads/workloada -p mongodb.url=mongodb://192.168.0.8:27017 -p mongodb.database=ycsb -p recordcount=100 -load 
new database url = 192.168.0.8:27017/ycsb 
mongo connection created with 192.168.0.8:27017/ycsb 
[OVERALL], RunTime(ms), 828.0 
[OVERALL], Throughput(ops/sec), 120.77294685990339 
[INSERT], Operations, 100 
[INSERT], AverageLatency(us), 4279.99 
[INSERT], MinLatency(us), 588 
[INSERT], MaxLatency(us), 262990 

而且

YCSB Client 0.1 
Command line: -db com.yahoo.ycsb.db.JdbcDBClient -s -P /home/james/YCSB/workloads/workloada -p db.url=jdbc:mysql://192.168.0.8:3306/ycsb -p db.user=root -p db.passwd=root -p recordcount=2001 -load 
Adding shard node URL: jdbc:mysql://192.168.0.8:3306/ycsb 
Using 1 shards 
[OVERALL], RunTime(ms), 3359.0 
[OVERALL], Throughput(ops/sec), 595.7130098243525 
[INSERT], Operations, 2001 
[INSERT], AverageLatency(us), 1259.888055972014 
[INSERT], MinLatency(us), 401 
[INSERT], MaxLatency(us), 34779 

我寫,可以在兩者中使用的腳本,並收集相關的值

cat 100.dat | head | egrep -w 'Operations|Throughput' | cut -f3 -d' ' | sed 'N;s/\n/ /' | awk ' { t = $1; $1 = $2; $2 = t; print; } ' 

回報:100 120.77294685990339

什麼文件時,它正在對使用

我需要包含mongodbmysql的第三列。所以我需要一個awk或sed管道,它將搜索字符串並將其插入到第3列中。

所需的輸出應該是這樣的:100 120.77294685990339 mysql

+0

您的要求不清楚 - 這些文件的輸出是什麼? – 2015-04-05 00:54:32

+0

包含「mongodb」或「mysql」的第三列。所以100 120.77294685990339 mysql。例如 – JamesF 2015-04-05 00:56:22

回答

2

我認爲你應該做的整個事情的awk的一個調用。這樣做的關鍵是改變你的字段分隔符:

awk -F'[,=]|://' '/^Command/{db=$2}/Operations/{o=$3}/Throughput/{t=$3}END{print o,t,db}' file 

字段分隔符被設置爲,=://。您感興趣的文件的部分保存到變量並在文件處理完成後打印。

比使用END塊相反,你可以打印時/Operations/匹配:

awk -F'[,=]|://' '/^Command/{db=$2}/Operations/{print $3,t,db}/Throughput/{t=$3}' file 

當然,這是假定三條線將在你的兩個例子指定的順序被發現。

+1

非常感謝。 awk -F'[,=] |://''/ Command/{db = $ 2}/Operations/{o = $ 3}/Throughput/{t = $ 3} END {print db o t}'很好。我在最後刪除了逗號,因爲他們創建了額外的空格。 – JamesF 2015-04-05 14:13:57

+0

@JamesF是的,逗號將導致在每個字段之間插入輸出字段分隔符(默認爲空格)。您可以調整輸入字段分隔符,以便它也包含一個空格,但在這種情況下,刪除逗號可能更簡單。 – 2015-04-05 14:25:11