2016-07-27 126 views
0

我是新的shell脚本。我需要使用shell脚本在运行和自动匹配计数之间获取数据。以便它可以作为半结构化数据进行处理。请咨询使用shell拆分数据

回答

1

使用sed -n '/run/,/Automatic/p' filename.txt|sed '1d;$d'|sed '$d;s/ //g' - 应该清理(以年初1号线,2分最后几行和空格)数据

shell脚本 - split.sh

#!/bin/bash 
sed -n '/run/,/Automatic/p' $1|sed '1d;$d'|sed '$d;s/  //g' 

跑了下面的任何文件在控制台和文件中输出:

shell> ./split.sh test.txt |tee splitted.dat 
United Kingdom:  21/09/2012 
Started:  08/02/2013 16:04:44 
Finished:  08/02/2013 16:21:23 
Time to process:  0 days 0 hours 16 mins 39 secs 
Records processed: 37497 
Throughput: 135124 records/hour 
Time per record:  0.0266 secs 

输出将被存储在文件splitted.dat

shell> cat splitted.dat 
United Kingdom:  21/09/2012 
Started:  08/02/2013 16:04:44 
Finished:  08/02/2013 16:21:23 
Time to process:  0 days 0 hours 16 mins 39 secs 
Records processed: 37497 
Throughput: 135124 records/hour 
Time per record:  0.0266 secs 
shell> 

更新:

#!/bin/bash 
# p      - print lines with specified conditions 
# !p     - print lines except specified in conditions (opposite of p) 
# |(pipe)    - passes output of first command to the next 
# $d     - delete last line 
# 1d     - delete first line (nd - delete nth line) 
# '/run/,/Automatic/!p' - print lines except lines between 'run' to 'Automatic' 
# sed '1d;s/  //g'- use output from first sed command and delete the 1st line and replace spaces with nothing 

sed -n '/run/,/Automatic/!p' $1 |sed '1d;s/  //g' 

输出:

Verified Correct:  32426 (86.5%) 
Good Match: 2102 (5.6%) 
Good Premise Partial: 862 (2.3%) 
Tentative Match:  1039 (2.8%) 
Poor Match:  4 (0.0%) 
Multiple Matches: 7 (0.0%) 
Partial Match: 872 (2.3%) 
Foreign Address: 2 (0.0%) 
Unmatched:  183 (0.5%) 
+0

谢谢!验证正确:32426(86.5%) 适合:2102(5.6%) 良好前提部分:862(2.3%) 暂时匹配代码:1039(2.8%) 不符合:4(0.0%部分匹配:872(2.3%) 外地址:2(0.0%) 无与伦比:183(0.5%) 多个匹配项:7(0.0%) – Holmes

1
sed -n '/run/,/Automatic/ {//!p }' test.txt 

这将打印所有行(,)之间运行和自动。从输出中删除行运行和自动匹配计数。

enter image description here