“Linux-2018-spring-5-22”的版本间的差异

来自SUDA-HLT
跳到导航 跳到搜索
(创建页面,内容为“一、复习 *正则表达式 *sed *vim 二、新内容 *sed的应用 sed 's/^ //' score.txt | less 把每行前四个空格删掉 sed -r 's/^\s+//...”)
 
第24行: 第24行:
 
   
 
   
 
*awk
 
*awk
  awk '条件/模式 {动作}'
+
awk '条件/模式 {动作}' FILE
 
   awk '$3>=90 {print}' score1.txt | less:$3为第三列  
 
   awk '$3>=90 {print}' score1.txt | less:$3为第三列  
   awk '{print $2 " " $5}':打印两列
+
   awk '{print $2 " " $5}':打印两列,第二列和第五列
 
   awk '{print $2,$5}'
 
   awk '{print $2,$5}'
 
   awk 'NR>1 {print}'
 
   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、把复杂饿的事情拆成一步步的小任务,逐一用命令完成
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
  
  

2018年5月22日 (二) 06:11的版本

一、复习

  • 正则表达式
  • sed
  • vim


二、新内容

  • sed的应用
   sed 's/^    //' score.txt | less 把每行前四个空格删掉
   sed -r 's/^\s+//' socre.txt>score2.txt
   sed '1d' score.txt | less 删除第一行
   sed 's/[^0-9]$/d'删除缺考的那一行
   sed -r 's/[^0-9 ].*[^0-9]/ /'
  • egrap
  egrap '^([a-Z]+)([0-9]+) \2\1$':一行的开始第一组为字母,第二组为数字,然后是空格,需要严格匹配。匹配上abc123 123abc 匹配不上:abc123 342abc
  egrap '^([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。