Linux之shall脚本扩展(1)

Linux之shall脚本扩展(1)

一、 正则表达式:

 

正则表达式(或称Regular Expression,简称RE)就是由普通字符(例如字符 a 到 z)以及特殊字符(称为元字符)组成的文字模式。

该模式描述在查找文字主体时待匹配的一个或多个字符串。

正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配。简单的说,正则表示式就是处理字符串的方法,它是以行为单位来进行字符串的处理行为, 正则表示式通过一些特殊符号的辅助,可以让使用者轻易的达到搜寻/删除/取代某特定字符串的处理程序。vim、grep、find、awk、sed等命令都支持正则表达式。

1.常用正则表达式:

1)  . 代表任意单个字符;

例如:检索test.txt文本中匹配s字符的。

2) ^ 代表行的开始;

3) $ 代表行的结束;

例如;检索test.txt文本中以.结束的。(\.表示把特殊字符.转为普通字符)

4)[...]表示匹配括号中的字符之一

例如:检索test.txt文本中匹配小写字母a到z之间的。

注意:

[abc]表示匹配单个字符a或b或c

[123]表示匹配单个字符1或2或3

[A-Z]表示匹配大写字母A-Z之间一个

[^a]表示取反,匹配除去小写字母a的。

5)* 表示前导字符出现0次或任意多次;

例如:检索test.txt文本中出现0次或多次T的。

6) \? 表示前导字符出现0或1次;

例如:检索test.txt文本中出现0或1次e的。

7)\+  表示前导字符出现1次或多次。

例如:检索test.txt文本中出现1或多次nn的。

8)\{n,m\} 表示前导字符出现n至m次;

n/m为整数,并且m>n;

其他形式:

\{n\}连续的n个前导字符;

\{n,\}连续的至少n个前导字符;

例如:检索test.txt文本中出现2至4个n的。

9) \ 表示转义其后的单个特殊字符,使其成为普通字符;

例如:检索test.txt文本中含有.的。

10) | 表示或;

例如:检索test.txt文本中含有a或b的。

11) []  或 ():将部分内容合成一个单位组;

例如:检索test.txt文件中含有Tae或The的。

二、grep命令的用法

grep (global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来.

1)-A 数字:列出符合行之外,并且列出后几行;

例如:列出test.txt文本中Tom行与后俩行。

2)-B 数字:列出符合行之外,并且列出前几行;

例如:列出test.txt文本中Tom行与前俩行。

3)-C 数字(如不加数字,默认为2):列出符合行之外,并且列出前后几行;

例如:列出test.txt文本中Tom行与前后俩行。

4)-c : --count(若再加上-v参数则显示不符合的总行数):不显示符合的行,只显示符合的总行数;

例如:列出test.txt文本中含有Tom的行数;

列出test.txt文本中不含有Tom的行数。

5)-i :忽略大小写

例如:列出test.txt文本中含有tom(大小写)的行。

6)-n :再匹配的行前面打印行号

例如:列出test.txt文本中含有tom(大小写)的行,并且打印出行号。

7)-v :反检索,显示不匹配的行;

例如:列出test.txt文本中不含有tom的行。

8)精确匹配:再抽取的字符串后加上  \>

例如:精确列出test.txt文本中含有30的行。

8)-s :不显示不存在或不匹配文本的错误信息;(如文件不存在)

例如:bb.txt文件不存在,检索时候提示搜索不到的错误信息,

如果不要错误信息提示,则加上-s

三、sed命令的用法

sed是一种在线编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有改变,除非你使用重定向存储输出。

sed的基本命令

1)s :替换

例如:把test.txt中The替换成aa,输出到bb.txt文件中。

sed 替换命令:

/../../分隔符(可以用其他符合代替)

The 搜索的字符串

aa  替换的字符串

<test.txt>  搜索的文件

bb.txt   输出到的文件

2) & :表示匹配的字符串

注意:

sed 默认只替换搜索字符串的第一次出现 , 利用 /g 可以替换搜索字符串所有

如果需要对同一文件或行作多次修改,可以使用 "-e" 选项

例如:给test.txt中The替换成加一个(),输出到cc.txt文件中。

3) d :删除行

例如:将passwd内容显示并打印行号,同时删除2到5行。

注意:

nl命令在linux系统中用来计算文件中行号。nl 可以将输出的文件内容自动的加上行号。

4)增加行a(在指定的行后新增)i(在指定的行前新增)

例如:将test.txt内容显示并打印行号,同时在第二行后新增hello。

例如:将test.txt内容显示并打印行号,同时在第二行前新增hello。

例如:如果要同时新增多行,则每行之间要用反斜杠\来进行的添加。

5)c :取代行

例如:将test.txt内容显示并打印行号,同时取代2到5行间内容为BBBBBBB。

6)p : 打印

例如:仅列出test.txt文本中的第5到7行内容。

7)-i:sed 的-i选项可以直接修改文件中的内容

例如:将test.tst文本中的第二行修改为kkkk

8)扩展

调用sed的方式:

在命令行键入命令

将sed命令插入脚本文件,然后调用sed

将sed命令插入脚本文件,并使sed脚本可执行。

使用sed命令行的格式:

sed [选项] sed命令 输入文件。

记住在命令行使用sed命令时,实际命令要加单引号。

sed也允许加双引号。

使用sed脚本文件格式:

sed [选项] -f sed脚本文件  输入文件

要使用第一行具有sed命令解释器的sed脚本文件的格式:

sed脚本文件 [选项]  输入文件

例如:使用sed脚本将jjjjj添加到test.txt文本中的第三行,将lllll添加到test.txt文本中的第四行。

给sed脚本权限,运行脚本

时间: 2024-08-01 10:32:38

Linux之shall脚本扩展(1)的相关文章

Linux下3G脚本拨号上网(转)

Linux下3G脚本拨号上网 (2010-7-5 13:08) 既然是拨号上网,就不能不提到ppp(point-to-point protocol)协议.ppp协议提供了一种通过串行点对点联接传输数据报的方式.它由三部份组成:一种在串行封装数据报的方式,扩展联接控制协议LCP,和用来建立和配置不同网络层协议的家族网络控制协议NCP.封装方案由内核驱动代码来提供.pppd(ppp daemon)提供基本的LCP,认证支持,和建立和配置IP的网络控制协议NCP.一个ppp会话分为四个步骤:连接建立.

linux学习—shell脚本知识点总结

Shell脚本 --Shell脚本有点像早期的批处理文件,将一些命令汇总起来一次执行,但Shell有更强大的功能,可以类似于程序的编写,不需要编译就能执行,使用起来很方便,可以简化我们日常的管理工作. 目录 什么是Shell 脚本的运行方法 #!(读shabang)的作用详解 结合案例分析变量类型 特殊变量及其[email protected] $*的区别 退出状态 算数运算 test和[ expression ]判断 一.什么是Shell 我们知道管理整个计算机硬件的其实是核心(kernel)

linux 编译PHP memcache扩展

在Linux下编译memcache:memcache官网:http://memcached.org/前期准备:如果是虚拟机 保证虚拟机 联网安装依赖包yum -y install gcc make libtool autoconf编译libevent(官网:http://libevent.org/ memcache编译需要用到这个东西)cd /usr/local/srcwget https://github.com/libevent/libevent/releases/download/rele

linux下shell脚本执行方法及exec和source命令

exec和source都属于bash内部命令(builtins commands),在bash下输入man exec或man source可以查看所有的内部命令信息. bash shell的命令分为两类:外部命令和内部命令.外部命令是通过系统调用或独立的程序实现的,如sed.awk等等.内部命令是由特殊的文件格式(.def)所实现,如cd.history.exec等等. 在说明exe和source的区别之前,先说明一下fork的概念. fork是linux的系统调用,用来创建子进程(child

Linux系统shell脚本编程——生产实战案例

Linux系统shell脚本编程--生产实战案例     在日常的生产环境中,可能会遇到需要批量检查内网目前在线的主机IP地址有哪些,还可能需要检查这些在线的主机哪些端口是开放状态,因此依靠手工来检查是可以实现,但比较费时费力,所以需要结合shell脚本来实现批量检查的功能,那么今天就来做个小小的实验. 1.开发脚本前准备 一般大家都知道,测试主机是否在线,常用的命令无非就是ping.nmap,因此,首先找一个地址来测试下ping命令的效果 [[email protected] scripts]

linux下增加pdo-mysql扩展

默认的PHP安装,只安装了常用默认模块,一些不常用或少用的,就没有默认安上 可通过如下方法增加,如下以增加pdo-mysql为例 wget http://pecl.php.net/get/PDO_MYSQL-1.0.2.tgztar zxvf PDO_MYSQL-1.0.2.tgzcd PDO_MYSQL-1.0.2/www/wdlinux/php/bin/phpize./configure --with-php-config=/www/wdlinux/php/bin/php-config --

Linux/Unix shell 脚本中调用SQL,RMAN脚本

Linux/Unix shell脚本中调用或执行SQL,RMAN 等为自动化作业以及多次反复执行提供了极大的便利,因此通过Linux/Unix shell来完成Oracle的相关工作,也是DBA必不可少的技能之一.本文针对Linux/Unix shell脚本调用sql, rman 脚本给出了相关示例. 一.由shell脚本调用sql,rman脚本 [python] view plain copy print? 1.shell脚本调用sql脚本 #首先编辑sql文件 [email protecte

linux下shell脚本执行jar文件

最近在搞一个shell脚本启动jar文件个关闭jar文件的东东.搞得我都蛋疼了.今天晚上终于弄好了 话说,小弟的linux只是刚入门,经过各方查资料终于搞定了.话不多说,下面开始上小弟写的shell脚本 上面是小弟写的shell脚本.写的不好请见谅. 首先遇到的第一个坑 我在window下写的 然后道linux中执行,在linux死活都说俺的19行有错误,俺就不明白了,哪里有错,问了下别人,也说没错.突然有个高人问我在哪编写的,小弟回答在win下,他告诉俺执行下这个命令: dos2unix se

linux:shell脚本的一些语法

读取文件的第一行并赋值给变量 var=`head -1 filename` #`不是单引号,是Esc下方的一个按键,为命令替换符,将命令行执行结果赋给var 读取文件的第N行并赋值给变量 var=`sed -n Np filename` #把N替换成数字 逐行读取文件 while read line do echo $line done < filename linux:shell脚本的一些语法,布布扣,bubuko.com