linux学习笔记之shell编程(一)正则表达式与字符处理

版权声明:所有资料资源均应用作教育用途,请勿用作商业用途 https://blog.csdn.net/qq_38876114/article/details/82917778

shell编程

基础正则表达式

正则和通配符的区别:正则是包含匹配,匹配文件内容,grep,awk等支持正则表达式。通配符是完全匹配,匹配文件名,例如find,ls不认识正则表达式

####正则表达式常用的字符(注意区别于通配符里面的符号)####

  • -*,前一个字符重复任意多次
  • . ,匹配任意一个字符
  • ^ 匹配行首
  • $ 匹配行尾
  • [] 匹配括号中的任意一个
  • [^]对中括号中的字符取反
  • \ 转移符

正则表达式实例

  • grep "a*" text.txt 匹配文件中的全部内容
  • grep "aa*" text.txt 匹配至少一个a的行
  • grep "s..d" text.txt 匹配s和d中间有两个字母的行
  • grep ".*" text.txt 匹配所有内容
  • grep ""a[opd]d text.txt 匹配aod apd add
  • grep "^[0-9] text.txt" 匹配行首是数字的行
  • grep "a\{3\}" text.txt 匹陪刚好出现3次a的行

字符提取命令

cut [op] 文件名 ####、

  • -f 列号,
  • -d 分隔符
    cut 的默认分隔符是制表符tab,需要使用-d指定分隔符,入股是连续的空格作为分隔符,cut命令就会失效

printf ‘输出格式’,输出内容

格式化输出命令,%ns 字符串,%ni整数, %m.nf小数,共计m位,小数是n位
/n换行 /r回车 /t制表符
无法使用重定向的方式来输出文件内容

awk ‘条件1 {动作1},条件2 {动作2}…’ 文件名

常用条件:大于小于比较,
常用动作:格式化输出,流程控制
命令实例:
  • awk '{printf $2 "/t" $6 "/n"}' text.txt
    输出表格的2,6列,可以自动识别多个空格分隔符
  • awk 'BEGIN {print "%s" this is test} {printf $2 "\n"}' text.txt 在每一次读取数据之前输出字符串
  • awk 'BEGIN{FS=":"} {printf $2 "\n"} text.txt'指定分隔符是:同理,还有END条件

sed 轻量级的流文本编辑器

支持管道,可以直接编辑命令输出结果
sed [op] '[动作]' 文件名
  • -n 把经过处理的数据输出到屏幕
  • -e 允许对输入数据应用多条sed命令编辑
  1. a\ 追加,在当前行后添加一行多行
  2. c\替换行
  3. p 输出行
  4. d 删除行
    代码实例
    sed '2p' student.txt 输出第二行数据
    sed '2a nihao' student.txt 在第二行后追加数据
    sed '2i niyeshi\ duia' student.txt 在第二行前面加入两行数据,\代表数据没有输入完成

猜你喜欢

转载自blog.csdn.net/qq_38876114/article/details/82917778