查看“Linux-2020-spring-4-22”的源代码
←
Linux-2020-spring-4-22
跳到导航
跳到搜索
因为以下原因,您没有权限编辑本页:
您所请求的操作仅限于该用户组的用户使用:
用户
您可以查看和复制此页面的源代码。
== 正则表达式复习 == sed -r 's/abc/123/' vim /[0-9]{3}/(&)/ 分组:/([0-9]{3})([a-z]{3})/\2\1/ * hexdump:查看二进制文件 hexdump -C xx.bin == 正则表达式高级 == === sed === 以一个文件为例,看看 sed 's/^ //' score.txt | less 把每行前四个空格删掉 sed -r 's/^\s+//' socre.txt > score2.txt sed '1d' score.txt | less 删除第一行 sed '/[^0-9]$/d' 删除缺考(最后一个不是数字)的那一行;注意理解这个命令,和vi中是一样的,前面可以通过正则表达式来指定哪一行。's'和'd'命令都支持的。 sed -r 's/[^0-9 ].*[^0-9]/ /' *egrep egrep '^([a-Z]+)([0-9]+) \2\1$':一行的开始第一组为字母,第二组为数字,然后是空格,需要严格匹配。匹配上abc123 123abc 匹配不上:abc123 342abc egrep '^([a-Z]+)([0-9]+) ([0-9]+)([a-Z]+)$':可匹配上abc123 342abc == awk == awk '条件/模式 {动作}' FILE awk '$3>=90 {print}' score1.txt | less:$3为第三列 awk '{print $2 " " $5}':打印两列,第二列和第五列 awk '{print $2,$5}' awk 'NR>1 {print}' awk 'NR>1 {print $0}':$0打印一行 awk 'BEGIN {print "No. ID. Score"}' score.txt awk 'BEGIN {sum = 0};{sum = sum +$3};END {aver = sum/NR;print NR,sum,aver}' score.txt wc score.txt:返回行数,词数/字段数,字符数 awk '{cn =cn+length($0) +1;wn = wn+NF};END {print NR, wn ,cn}' 特殊模式:BEGIN END 特殊变量: NR(record)---一行的记录,当前行 NF(field)-----字段,表示列 总结一下 awk是以行为单位进行处理,根据分隔符(可配置)将一行分为列(field) 是一种编程语言 语句:'pattern {action}’ awk 'pattern action' file awk '$3 >= 60 {print}' file awk '{sum=sum+$3}' file $0表示整行 特殊模式:BEGIN END 语言自带变量:NF(Number of field,当前行的列数);NR(number of record,当前行号) 用户自定义变量sum=sum+$3 和shell脚本语言对比学习,尤其注意什么时候加$,什么时候不加$ === 一个例子,有条件拷贝 === 感谢两位班上同学。 <nowiki> #! /usr/bin/awk -f BEGIN{ FS = OFS = "\t"; } { if ($0 != "") { if ($7 != "-1") { $6=$7 } } print $0 } </nowiki> == 管道pipeline == cat main.txt main.c >x1 egrep 'stdout'>x2 wc -l x2 rm cat main.txt main.c | egrep 'stdout' | wc -l:和上面的操作一样 cat stdoutxxx main.txt main.c 2>&1 | egrep 'stdout' | wc -l:标准错误输出重定向 rm */*.output:把所有文件下*.output删除 cat */*.txt |egrep '^[0-9- ]+' -o |sort >y1 :-o只输出匹配的东西 hexdump -C score.txt | less 分屏显示一个文本的二进制 unicode类别:utf-8,utf-16;0a;换行;0d:回车;20:空格;汉字大于一个字节;数字1:unicode码里面对应十六进制的31,十进制的49。 du -sh * | egrep 402 | awk '{print $2}' | xargs rm -r 402M的一个文件,中文乱码,没法匹配上,要删除这个中文名称的名字 == 课堂问题 == 两位同学的QQ群问答(赞!) Q: awk下怎么插入多行注释? A: 可以用这个 底行模式 .,$s/^/#/g == Linux的哲学思想== * small is beautiful,unless it is not.less is more.命令要小,做得好。 * 命令丰富满足用户/程序员的需求,避免写程序,重复造轮子。 * 把复杂的事情拆成一步步的小任务,逐一用命令完成(管道)。 == 2021.5.19 == <nowiki> seq 9 | sed 'H;g' | awk -v RS='' '{for(i=1;i<=NF;i++)printf("%dx%d=%d%s", i, NR, i*NR, i==NR?"\n":"\t")}' awk 'BEGIN{a=1;x1=7} {print a,x1}' en.dev.autotagMIRA.conll.dep > x awk -v a=1 -v x1=7 '{print a, x1}' en.dev.autotagMIRA.conll.dep > x awk 'END{print NR}' en.dev.autotagMIRA.conll.dep # 如何用awk实现wc的功能? awk '$1 == "1" {print}' en.dev.autotagMIRA.conll.dep awk '$1 == 1 {print}' en.dev.autotagMIRA.conll.dep awk '{if ($1 == "1") {print $0}}' en.dev.autotagMIRA.conll.dep awk 'BEGIN{RS="\n\n"; FS="\n"} {print $1}' en.dev.autotagMIRA.conll.dep </nowiki> [[文件:En.dev.autotagMIRA.conll.dep.txt]]
返回至
Linux-2020-spring-4-22
。
导航菜单
个人工具
登录
名字空间
页面
讨论
变种
视图
阅读
查看源代码
查看历史
更多
搜索
导航
首页
新闻
成员介绍
研究组
科研项目
发表论文
在线演示
工具
链入页面
相关更改
特殊页面
页面信息