grep awk sed 实例练习

首先来道题热身一下截止到2014.2.23,亚太互联网络信息中心分配给中国大陆的IPv4地址是多少个?下载文件http://ftp.apnic.net/stats/apnic/2014/delegated-apnic-20140223.gz进行统计分析。文件格式为:apnic|CN|ipv4|1.2.2.0|256|20110331|assigned等级机构|获得该IP段的国家/组织|资源类型|起始IP|IP段长度|分配日期|分配状态0x01 grep练习1统计文件中的空行个数并输出数据:grep-1练习2统计文件中不包含”.txt”的行的行数并输出数据:grep-2练习3求两个文件的差集(3a.txt-3b.txt)并排序输出到标准io中数据:grep-3agrep-3b练习4在log文件中,有表示各轮迭代模型性能的报告(如下所示),

Total:      P=0.97198463(7841/8067) R=0.97914585(7841/8008) F=0.97555210

请将他们提取出来,并以如下格式输出。

P=0.97 R=0.98 F=0.98

数据:grep-40×02 sed练习1去掉文件中的空行数据:sed-1练习2某个文件包含三列,第三列是文本,但是文本被’扩了起来,请用提取出这一列并去掉开头和结尾的’符号。数据:sed-2练习3现在有如下文件

dev.gb.conll06.rawtest.gb.conll06.rawtrain.gb.conll06.raw

cat delegated-apnic-20140223 | awk -F\&; ‘BEGIN{$i=0}{if($2 == “CN”&&$3 == “ipv4”) {i=i+$5} print i }’ | tail -1请用sed和for配合,将文件名的后缀.raw去掉0x03 awk练习1输出一个文件所有的偶数行数据:awk-1练习2对于一个保存单词 频率的文件,要同时计算它的累积频率,并将它填在第三列。 举例如下,输入文件是

the 100i 50is 45...

输出文件是

the 100 100i 50 150is 45 195...

数据:awk-2练习3读入一个包含词性的文件,从中提取出原始句子。 输入文件格式:

石家庄_ns 空气_n 污染_vn 排_v 第一_m潘石屹_ns 遭遇_v 被_p 代言_n...

输出文件:

石家庄空气污染排第一潘石屹遭遇被代言...

数据:awk-30×04 答案热身答案:

cat delegated-apnic-20140223 | awk -F\| 'BEGIN{$i=0}{if($2 == "CN"&&$3 == "ipv4") {i=i+$5} print i }' | tail -1

grep练习1

grep -c "^$" grep-1.txt

grep练习2

grep -v ".txt" grep-2.txt

grep练习3

grep -v -f grep-3b.txt grep-3a.txtgrep -v -f grep-3a.txt grep-3b.txt

grep练习4

grep "^* Total:" 4.dat | sed "s/* Total:      P=\(.\{4\}\).\{18\}R=\(.\{4\}\).\{18\}F=\(.\{4\}\).*/P=\1 R=\2 R=\3/"

网上的答案是编写shell脚本,代码如下:

for LINE in `grep "^* Total:" 4.dat`doif [[ $LINE == "P="* ]];then p=${LINE:0:6}fiif [[ $LINE == "R="* ]];then r=${LINE:0:6}fiif [[ $LINE == "F="* ]];then f=${LINE:0:6}fi# the new line parameter is -e,the other is -nif [[ $p == "P="* ]] && [[ $r == "R="* ]] && [[ $f == "F="* ]];then echo -n $pecho -n "  "echo -n $recho -n "  "echo -n $fecho ""p=""r=""f=""fidone

sed练习1

sed '/^$/d' sed-1.txt

sed练习2

sed "s/.*[ \t]\{1,\}'//;s/'//" sed-2.txt

sed练习3

for file in `ls`; do mv $file `echo $file | sed 's/\.raw$//'`; done

awk练习1

awk 'NR%2==0' awk-1.txt

awk练习2

i=1THIRD=0for ID in $(cat awk-2.txt)doNUM=$iFIRST=$(awk 'NR=='$NUM' {print $1}' 2.dat)SECOND=$(awk 'NR=='$NUM' {print $2}' 2.dat)THIRD=$((THIRD+SECOND))echo -n $FIRSTecho -n "  "echo -n $SECONDecho -n "  "echo -n $THIRDecho ""i=$((i+1))done

awk练习3

sed 's/[ _a-zA-Z ]//g' awk3.txt

 From https://github.com/HIT-SCIR/scir-training-day/tree/master/1-shell-practice

grep awk sed 实例练习

相关文章:

你感兴趣的文章:

标签云: