sed意为流编辑器(Stream Editor),在Shell脚本和Makefile中作为过滤器使用很普遍,也就是把前一个程序的输出引入sed的输入,经过一系列编辑命令转换为另一种格式输出. sed不只支持正則表達式.它另一些比較厉害的功能. 我给出一个样例,大家看看有什么办法能够解决它吧. <html><head><title>Hello World</title> <body>Welcome to the world of regexp!&l…
shell脚本的学习: 1.Shell的作用是解释运行用户的命令,用户输入一条命令,Shell就解释运行一条,这样的方式称为交互式(Interactive),Shell还有 一种运行命令的方式称为批处理(Batch),用户事先写一 个Shell脚本(Script),当中有非常多条命令,让Shell一次把这些命令运行完,而 不必一条一条地敲命令. 2.shell变量包含环境变量和本地变量,环境变量能够从父进程传给子进程,printenv可打印出来:本地变量仅仅存在于当前 Shell进程,用set命…
其实,vii 就是写的一个脚本,跟 vi 没半毛钱关系,只不过借用一下这个名字而已.那这个脚本长什么样呢?look: 下面来详细的解析上面的代码,来看第1行: #!/bin/bash 这是Shell脚本的格式,没啥好讲的. 再来看第3-6行: if [ $# -eq 0 ] then vi fi 这是是判断执行 vii 的时候带不带参数,假如不带参数,那么就直接启动 vi 再来看第8-16行: if [ $# -eq 1 ] then suffix=`echo $1 | sed "s/\(.*\…
1 sed 替换   1格式: 's/原字符串/新字符串/'   输入源   2正确参考: sed ’s/as/AS/' do.txt 改变字符串as为AS,不会改输入源的文件. 匹配每行第一次匹配的位置. sed ’s/as/AS/' do.txt 指定匹配每行第二个被匹配的数据, 用/n来指定匹配第几个 ' do.txt 每行的第二个as变成了AS 配合g命令,全部匹配, 设置文件中所有匹配的位置,修改完全部的as都被替换成AS了 3 错误参考: 注意尾部有/  , 试了一个上午一直没成功,…
1.判断符号:中括号[ ] [ ]进行数据的判断,例如我想知道HOME这个变量是否为空,[ -z "$HOME" ],或者两个字符串是否相等,[ "$HOME"  ==  "$MALI" ].由于中括号使用的地方有很多,所以在bash中作为判断式时,中括号的两端需要有空格来分隔.在使用中需要注意: 在中括号内的每个组件都需要有空格键来分隔 在中括号内的变量,最好以双引号括号起来,例如"$HOME" 在中括号内的常量,最好以单或…
正則表達式一般有三个部分组成,他们各自是:字符类,数量限定符,位置限定符. 规定一些特殊语法表示字符类.数 量限定符和位置关系,然后用这些特殊语法和普通字符一起表示一个模式,这就是正則表達式(Regular Expression). 我们以一 个样例開始吧.假如给你一个文件,里面存放的是IP地址,可是有一些不是合格的.请你找出合格的IP地址.我想不知道正 则表达式的人一定会认为好陌生,我拿一个循环去实现,我之前也被问到过这个问题,也是想着拿循环来完毕.写出一个函 数来实现这个查找功能实在是不简单…
一.文件比较运算符-e filename 如果 filename存在,则为真 [ -e /var/log/syslog ]-d filename 如果 filename为目录,则为真 [ -d /tmp/mydir ]-f filename 如果 filename为常规文件,则为真 [ -f /usr/bin/grep ]-L filename 如果 filename为符号链接,则为真 [ -L /usr/bin/grep ]-r filename 如果 filename可读,则为真 [ -r…
正则表达式_百度百科 http://baike.baidu.com/link?url=ybgDrN2WQQKN64_gu-diCqdeDqL8LQ-jiQ-ftzzPaNUa9CmgBRDNnyx50vZlGSGNt0jYq7BN4mac4RrVC96KKq SED(Linux指令)_百度百科 http://baike.baidu.com/link?url=DQklcY8r4u33kGGfZt5Q-Mm6JHgKOGJQqQvpvfB3mYk5R_kiZ4X6jcdBs10ni1cZFm7-Oh…
一.流编辑器 sed 与命令 sed Linux 中,常使用流编辑器 sed 进行文本替换工作.与常使用的交互式编辑器(如vim)不同,sed 编辑器以批处理的方式来编辑文件,这比交互式编辑器快得多,可以快速完成对数据的编辑修改. 一般来说,sed 编辑器会执行以下操作: 1)一次从输入中读取一行数据: 2)根据所提供的编辑器命令匹配数据: 3)按照命令修改流中的数据: 4)将新的数据输出到 STDOUT. 在 sed 编辑器匹配完一行数据后,它会读取下一行数据并重复这个过程,直到处理完所有数据…
Shell脚本学习指南 作者:Danbo 2015-8-3 脚本编程语言与编译型语言的差异 许多中型.大型的程序都是用编译型语言写的,例如:C.C+.Java等.这类程序只要从源代码(Source Code)转换成目标代码(object code),便能直接通过计算机来执行. 编译型语言的好处是高效,缺点是:他们多半运作于底层,所处理的是字节.整数.浮点数或是其他机器层级的对象.而脚本语言Shell通常是解析型(interpreted)的.这类程序的执行,是由解析器(interpreter)读入…
<shell脚本学习指南>机械工业出版 ISBN 987-7-111-25504-8 第2章 2.4 初级陷阱 1.当今的系统,对#!这一行的长度限制从63到1024个字符都有,尽量不要超过64个字符. 2.在某些系统上,命令行部分包含了命令的完整路径名称.不过有些系统却不是这样:命令行的部分会原封不动地传递给被引用的程序. 3.别在选项之后放置任何空白,因为空白也会跟着选项一起传递给被引用的程序. 4.你需要知道解释其的完整路径名称.这可以用来规避可移植问题,因为不同的厂商可能将同样的东西放…
前言: 通过对spark集群脚本的研读, 对一些重要的shell脚本技巧, 做下笔记. *). 取当前脚本的目录 sbin=`dirname "$0"` sbin=`cd "$sbin"; pwd` 代码评注:# 以上代码为获取执行脚本所在的目录的常用技巧# sbin=$(dirname $0) 返回可能是相对路径, 比如./ # sbin=$(cd $sbin; pwd) 采用pwd, 来返回脚本所在目录的绝对路径 *). 循环遍历脚本参数 while (( &q…
Shell文档 ChinaUnix上大神“網中人”总结的Shell十三问,强烈推荐,这本书讲得比较精炼,而且都是一些Shell学习中容易把握不住的一些细节难点.每一问都写得非常精彩.ChinaUnix上,还有个wingger大神整理的Shell基础二十篇.这份文档涉及的内容比较多,我没记错的话应该有很多命令的用法,而且配备实际使用的例子,对初学者帮助甚大. <Shell脚本专家指南>(文中提到的书和资料下面都有下载的链接)也是一本不可多得的好书.书中都是作者实际工作中的经验总结,你可以从中学到…
shell脚本学习指南 以下八点不敢说就能成为你shell脚本学习指南de全部,至少可以让你编写出可靠的shell脚本. 1. 指定bashshell 脚本的第一行,#!之后应该是什么?如果拿这个问题去问别人,不同的人的回答可能各不相同.我见过/usr/bin/env bash,也见过/bin/bash,还有/usr/bin/bash,还有/bin/sh,还有/usr/bin/env sh.这算是编程界的“’茴’字四种写法”了.在多数情况下,以上五种写法都是等价的.但是,写过程序的人都知道:“少…
shell脚本学习之6小时搞定(1) 简介 Shell是一种脚本语言,那么,就必须有解释器来执行这些脚本. Unix/Linux上常见的Shell脚本解释器有bash.sh.csh.ksh等,习惯上把它们称作一种Shell.我们常说有多少种Shell,其实说的是Shell脚本解释器. Hello World 打开文本编辑器,新建一个文件test.sh,扩展名为.sh(sh代表shell). 输入一些代码: #!/bin/bash echo "Hello World !" 在命令行运行:…
继续shell脚本学习.上一篇是基本数据类型和语法的总结,这一篇是运算相关的操作. 运算符 bash不支持简单的数学计算,需要依赖其他命令实现. expr可以代为实现. # 表达式一般这么写 ` + ` 注意点: 1. 引号不是普通单引号,是右斜的引号,在esc键下方.表达式用这种右斜的引号括起来,必须成对出现 2. 运算符两边要留空格.4+4不行,必须写成4 + 4 运算符不用多说,和其余编程语言类似.加减乘除取余:+-*/% 赋值用=,比较相等用==,比较不等用!= 特别注意的是*要在前面加…
20171123 Linux shell 基础学习笔记1. shell 的开始 一般是 #!/bin/bash 通过 #! 来唯一指定使用的shell路径 其他的 # 都表示注释.2. shell 的变量 定义变量直接用 variablename= value 就可以 其中变量名与等号之间没有空格. 使用变量的时候 是 ${vairablename} 的方式进行使用 大括号可以有可以没有,但是建议有. 可以使用 for file in `ls /etc/` 的方式来循环取得文件名. 使用do d…
bash同时支持普通数组个关联数组,普通数组只能使用整数作为数组的索引,关联数组可以使用字符串作为数组的索引. 数组的定义方法: 在单行中使用一列值定义一个数组 [root@new ~]# array1=( ) 使用索引-值定义 [root@new ~]# array2[]="test1" [root@new ~]# array2[]="test2" [root@new ~]# array2[]="test3" 使用key-value键值对 [r…
在shell编程中,大多数处理的都是文本文件.对文本文件进行处理除了使用交互式文本编辑器(vi[m],gedit......)也可以使用另外一类:流编辑器. 流编辑器:使用预定义的编辑规则来对文本进行处理.如sed,gawk 本文将会记录学习的sed的一些命令,以及一些正则联合使用来对文本进行操作案例. 第一部分:sed简述 1.1 sed的使用方法 sed编辑器是以行为单位来对文本处理的编辑器.它的使用方法有两种: sed [选项] 命令 目标文本 sed [选项] -f 脚本文件 目标文件…
在编写shell脚本的过程中,我们经常需要使用sed流编辑器和awk对文本文件进行处理. 一.什么是sed? sed 是一种在线编辑器,它一次处理一行内容.sed是非交互式的编辑器.它不会修改文件,除非使用shell重定向来保存结果.默认情况下,所有的输出行都被打印到屏幕上. 二.sed的处理过程 sed编辑器逐行处理文件(或输入),并将结果发送到屏幕.具体过程如下:首先sed把当前正在处理的行保存在一个临时缓存区中(也称为模式空间),然后处理临时缓冲区中的行,完成后把该行发送到屏幕上.sed每…
概念 真正能够控制计算机硬件(CPU.内存.显示器等)的只有操作系统内核(Kernel),图形界面和命令行只是架设在用户和内核之间的一座桥梁. 由于安全.复杂.繁琐等原因,用户不能直接接触内核(也没有必要),需要另外再开发一个程序,让用户直接使用这个程序:该程序的作用就是接收用户的操作(点击图标.输入命令),并进行简单的处理,然后再传递给内核.如此一来,用户和内核之间就多了一层“代理”,这层“代理”既简化了用户的操作,也保护了内核. 用户界面和命令行就是这个另外开发的程序,就是这层“代理”.在L…
(1)首先,今天在执行shell脚本./test.sh时抛出“/bin/sh^M: bad interpreter: No such file or directory”的异常,百度后,才知道这是由于不同系统编码格式不同引起的.在windows系统中编辑的.sh文件可能有不可见字符,所以在执行时会抛出上面的异常信息. 解决方法:1,确定文件有执行权限 2,修改文件格式: vi test.sh  使用vi命令准备修改文件格式 :set ff 或:set fileformat  命令模式下查看文件格…
Shell的函数在使用之前必须先定义,定义格式: [ function ] funname [()] { action; [return int;] } 可以带function fun()定义,也可以直接fun() 定义,不带任何参数. 参数返回,可以显示加:return 返回,如果不加,将以最后一条命令运行结果,作为返回值. return后跟数值n(0-255) 示例 fsum 2 5 fsum(){ echo $1,$2 return $1+$2 } sum=$(fsum 2 5) echo…
变量 定义变量 可以使用export和readonly来设置变量,export用于修改或打印环境变量,readonly则使得变量不得修改.语法: export name[=word] ... readonly name[=word] ... 可以export/readonly时就给变量赋值,或给变量赋值后再export/readonly变量,如: export website=oseye.net age=22 export age 比较常用的exoprt,它是把变量放进环境中,新的进程可以从其父…
为什么要使用shell脚本? shell脚本能够轻易处理文件与目录之类的对象,而且是各UNIX系统之间经过POSIX标准化的通用的功能,因此Shell脚本只要“用心写”一次,即可应用到很多系统上,因此之所以要使用Shell脚本是基于: 简单性:Shell是一个高级语言,通过它,你可以简洁地表达发杂的操作: 可移植性:使用POSIX所定义的功能,可以做到脚本无须修改就可以在不同的系统上执行: 开发容易:可以在短时间内完成一个功能强大又好用的脚本: 第一个shell脚本 cat > testshel…
在执行Shell脚本的时候,可以在执行时带上参数,相当于传递参数给脚本,下面我们看一下怎么使用这个参数 以下蓝色字体部分为Linux命令,红色字体的内容为输出的内容: # cd /opt/scripts # vim script05.sh 开始编写script05.sh的脚本,脚本内容为: #! /bin/sh echo "$# 个参数" echo "参数内容:$@" echo "第一个参数内容:$1" ps -ef|grep $1 # chmo…
脚本语言通常是解释型的,这类程序的运行.是由解释器读入程序代码,并将其转换成内部的形式, 再执行,解释器本身是一般的编译型程序. 第一行的开头处使用#!这两个字符,当内核扫描到改行的其余部分,看是否存在可以用来执行程序的 解释器的完整路径. Shell命令与参数 分号(;)可用来分隔同一行的多条命令,Shell会依次执行: 使用&,则表示Shell将在后台执行其前面的命令,Shell不用等到该命令执行完,就可以继续下一条命令的执行: Shell变量 1.名称开头是一个字母或下划线开头符号,后面可…
跟着RUNOOB网站的教程学习的笔记 Shell与Shell脚本 Shell是用户与Linux系统的桥梁.它既是一种命令语言,也是一种程序设计语言. Shell脚本是一种Shell编写的脚本程序,其实就是一个包含Shell代码的文本文件,运行时,会一行一行的运行给文本文件中的命令. Shell脚本的运行 随便打开一个文本编辑器(例如Windows自带的记事本,推荐安装Notepad++),新建一个文件,拓展名为.sh.其实拓展名并不影响脚本执行,为的是方便使用者判断该脚本大概是什么文件. #!/…
原创 杜亦舒性能与架构 之前介绍过 awk 命令,sed 命令同样是非常重要的文本处理工具,涉及到linux shell开发时,几乎是避不开这两大利器的 sed 是 stream editor 的简写,是一种非交互式的流编辑器,默认情况下,sed并不会改变原文件本身,而只是对文本流进行修改,并将修改后的结果打印到标准输出中 与awk命令一样,sed处理文本时也是以行为单位,每处理完一行就立即打印出来,然后再处理下一行,直至全文处理结束 sed可做的编辑动作包括删除.查找替换.添加.插入.从其他文…
Shell学习笔记 简介: Shell 是一个用C语言编写的程序,它是用户使用Linux的桥梁.Shell既是一种命令语言,又是一种程序设计语言. Shell 是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务. Ken Thompson的sh是第一种Unix Shell,Windows Explorer是一个典型的图形界面Shell. Shell教程入门 1.shell脚本 shell脚本shell script,是一种为shell而编写的脚本程序.然而通常所…