“Linux-2018-spring-5-22”的版本间的差异
跳到导航
跳到搜索
| 第15行: | 第15行: | ||
sed -r 's/^\s+//' socre.txt>score2.txt | sed -r 's/^\s+//' socre.txt>score2.txt | ||
sed '1d' score.txt | less 删除第一行 | sed '1d' score.txt | less 删除第一行 | ||
| − | sed ' | + | sed '/[^0-9]$/d'删除缺考的那一行 |
sed -r 's/[^0-9 ].*[^0-9]/ /' | 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 | |
| 第42行: | 第42行: | ||
*管道pipeline | *管道pipeline | ||
| − | cat main.txt | + | cat main.txt main.c >x1 |
egrep 'stdout'>x2 | egrep 'stdout'>x2 | ||
wc -l x2 | wc -l x2 | ||
rm | rm | ||
| − | cat main.txt | + | cat main.txt main.c | egrep 'stdout' | wc -l:和上面的操作一样 |
| − | cat stdoutxxx | + | cat stdoutxxx main.txt main.c 2>&1 | egrep 'stdout' | wc -l:标准错误输出重定向 |
rm */*.output:把所有文件下*.output删除 | rm */*.output:把所有文件下*.output删除 | ||
cat */*.txt |egrep '^[0-9- ]+' -o |sort >y1 :-o只输出匹配的东西 | cat */*.txt |egrep '^[0-9- ]+' -o |sort >y1 :-o只输出匹配的东西 | ||
2018年5月24日 (四) 15:12的版本
一、复习
- 正则表达式
- sed
- vim
二、新内容
- sed的应用
sed 's/^ //' score.txt | less 把每行前四个空格删掉 sed -r 's/^\s+//' socre.txt>score2.txt sed '1d' score.txt | less 删除第一行 sed '/[^0-9]$/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)-----字段,表示列
- 管道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只输出匹配的东西
linux的哲学思想:
1、small is beautiful,unless it is not.less is more.命令要小,做得好。 2、命令丰富满足用户/程序员的需求,避免写程序,重复造轮子。 3、把复杂的事情拆成一步步的小任务,逐一用命令完成(管道)。
- 补充
1、hexdump -C score.txt | less 分屏显示一个文本的二进制
2、unicode类别:utf-8,utf-16;0a;换行;0d:回车;20:空格;汉字大于一个字节;数字1:nicode码里面对应十六进制的31,十进制的49。