shell编程-正则表达式

1.正则表达式是什么

它主要用于字符串的模式分割,匹配,查找及替换操作。

2、正则表达式与通配符

正则表达式用来在文件中匹配符合条件的字符串,正则包含匹配。grep,awk,sed等命令可以支持正则表达式。

通配符用来匹配符合条件的文件名,通配符是完全匹配。ls ,find,cp这些命令不支持正则表达式,所以只能使用shell自己的通配符进行匹配了。

3.基础正则表达式

.相当于通配符的?

[0-9]\{4\}-[0-9]\{2\}-[0-9]\{2\}

[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\

3.字符截取命令

cut [选项] 文件名

-f 列号:提取第几列

-d:分隔符:按照指定分隔符分割列,默认分隔符是tab键(制表符)

ID name gender Make
1   nyan     n       89
2   luke      l        87
3   mak      n       67

cut -f 1,3 student.txt

grep "/bin/bash" /etc/passwd | grep -v "root" | cut -f 1 -d ":"

printf  ‘输出类型输出格式‘ 输出内容

输出类型:

%ns:输出字符串。n是数字指代输出几个字符

%ni:输出整数。n是数字指代输出几个数

%m.nf:输出浮点数.m和n指代输出整数位和小数位位数

printf不支持管道符,所以printf $(cat 2.txt)

awk ‘条件1{动作1}条件2{动作2}...‘ 文件名

条件Pattern:

一般使用关系表达式作为条件:>,<>=,<=

动作Action:

格式化输出

流程控制语句

awk ‘{printf $2 "\t" $4 "\n"}‘ student.txt

BEGIN: awk ‘BEGIN{print "test"}{print $2 "\t" $4}‘ student.txt

FS内置变量: cat /etc/passwd |grep /bin/bash |awk ‘{FS=":"}{print $1 "\t" $3}‘

如果没有加BEGIN,则是先读取数据赋值给指定变量$n,再告诉FS是":"作为分隔符,此时已晚。

cat /etc/passwd |grep /bin/bash |awk ‘BEGIN{FS=":"}{print $1 "\t" $3}‘

sed字符替换命令

sed [选项] ‘[动作]‘ 文件名

-n:一般sed命令会把所有数据输出到屏幕,如果加入此选择,则只会把经过sed命令处理的行输出到屏幕。

-e:允许对输入数据应用多条sed命令编辑

-i:用sed修改结果直接修改读取数据的文件,而不是有屏幕输出。

动作:

a:追加,在当前行后添加一行或多行

c:行替换,用c后面的字符串替换源数据行

i:插入,在当前行插入一行或多行。

d:删除指定行

p:打印,输出指定的行

s:字符串替换,用一个字符串替换另外一一个字符串。格式为 "行范围s/旧字符串/新字符串/g"

sed -n ‘2p‘ student.txt

sed ‘2a 3 f v m‘ student.txt

sed ‘2,4d‘ student.txt

前面数字是行号

4.字符处理命令

sort [选项] 文件名

-f:忽略大小写

-n:以数值型进行排序,默认使用字符串型排序

-r:反向排序

-t:指定分隔符,默认是分隔符是制表符

-k n[,m]:按照指定的字段范围排序。从第n字段开始,m字段结束(默认到行尾)

sort -n -t ":" -k "3,3" /etc/passwd

wc:统计命令

wc [选项] 文件名

-l:只统计行数

-w:只统计单词数

-m:只统计字符数

时间: 2024-10-24 15:41:29

shell编程-正则表达式的相关文章

Shell 编程 正则表达式

本篇主要写一些shell脚本正则表达式的使用基础. 概述 正则表达式分为基础正则表达式(Regular Expression)与扩展正则表达式(Extended Regular Expression). 它不是一个工具程序,而是一个字符串处理的标准依据,是使用单个字符串搜索.匹配一系列符合某个语法规则的字符串. 它由普通字符(a~z)以及特殊字符(元字符)组成. linux 文本处理工具 文本处理工具 基础正则表达式 扩展正则表达式 vi编辑器 支持 / grep 支持 / egrep 支持 支

Linux Shell编程 - 正则表达式

一.基础正则表达式 1.正则表达式:正则表达式是用来在文件中匹配符号条件的字符串,正则是包含匹配 grep.awk.sed等命令可以支持正则表达式. 2.通配符:用来匹配符合条件的文件名,通配符是完全匹配.ls.find.cp这些命令不之处正则表达式, 所以只能使用 shell 自己的通配符来进行匹配了. 3.基础正则表达式

Linux学习 -- Shell编程 -- 正则表达式

正则表达式与通配符 正则 -- 匹配字符串 -- 包含匹配     grep.awk.sed等 通配符 -- 匹配文件名 -- 完全匹配  ls.find.cp等 基础正则表达式

05 shell编程之正则表达式

正则表达式&&文本处理利器 学习目标: l  掌握正则表达式的运用 l  掌握sed.awk文本处理工具的使用 目录结构:   正则表达式 正则表达式概述 l  正则表达式:使用单个字符串来描述,匹配一系列符合某个句法规则的字符串 l  由普通字符与特殊字符组成 l  一般用在脚本编程,文本编辑器中,如php.Python.shell等,简写为regex.regexp.RE l  用来检索.替换符合模式的文本,具有强大的文本匹配功能 l  能够在文本海洋中快速高效地处理文本 l  正则表达

Shell编程之正则表达式(二)

文本处理器 在 Linux/UNIX 系统中包含很多种文本处理器或文本编辑器,其中包括我们之前学习过的VIM 编辑器与 grep 等.而 grep.sed.awk 更是 shell 编程中经常用到的文本处理工具,被称之为 Shell 编程三剑客. sed 工具 sed(Stream EDitor)是一个强大而简单的文本解析转换工具,可以读取文本,并根据指定的条件对文本内容进行编辑(删除.替换.添加.移动等),最后输出所有行或者仅输出处理的某些行.sed 也可以在无交互的情况下实现相复杂的文本处理

shell编程(七)--- sed的用法

sed:称为流编辑器,也称为行编辑器. sed处理过程:sed读取源文件中的一行,并将其放在临时缓冲区中,这个缓冲区称为模式空间,使用相应的模式对模式空间进行处理,并将处理的结果显示到屏幕上,并不会影响源文件,处理结束后,将模式空间中的内容显示至屏幕. sed格式: sed [options] 'AddressCommand' file ... options: -n:静默模式,不显示模式空间中的内容,默认显示默认空间中的内容.常和p命令一起使用. -i:直接修改源文件的内容. -e 'Addr

Linux Shell编程入门

从程序员的角度来看, Shell本身是一种用C语言编写的程序,从用户的角度来看,Shell是用户与Linux操作系统沟通的桥梁.用户既可以输入命令执行,又可以利用 Shell脚本编程,完成更加复杂的操作.在Linux GUI日益完善的今天,在系统管理等领域,Shell编程仍然起着不可忽视的作用.深入地了解和熟练地掌握Shell编程,是每一个Linux用户的必修 功课之一. Linux的Shell种类众多,常见的有:Bourne Shell(/usr/bin/sh或/bin/sh).Bourne

Shell编程(脚本)的常用命令和语句

一些常用的Shell编程(脚本)命令和语句,可以满足一般需求. 接收到的命令参数: 参数个数: $# 参数值: 命令本身:$0 第一个参数:$1 第二个参数:$2 -- 退出命令: exit echo命令: 换行: echo 输出后不换行: echo -n "请选择(y/n)?" 利用转义符号输出双引号: echo "欢迎使用\"正式服务器\"部署工具." 输出中带变量: echo "即将部署项目:$project_name"

linux中shell编程

shell编程 1 echo -e 识别\转义符 \a \b \t \n \x十六进制 \0八进制 等等 #!/bin/bash echo -e "hello world" 执行脚本:方式1 :chmod 755 hello.sh ./hello.sh 方式2 :bash ./hello.sh(这种方式不需要给执行权限) 1 历史命令 history 直接回车就可以看到已经敲过得命令.-c清空缓存中和文件中的命令 -w将缓存中命令写入 家目录/.bash_history 这个命令可以帮