shell 指令使用整理
1.getopts
unix有一个优点就是标准UNIX命令在执行时都具有相同的命令行格式:
command -options parameters
如果在执行Shell程序也采用上述格式,Bourne Shell中提供了一条获取和处理命令行选项的语句,即getopts语句。该语句的格式为:
getopts option_string variable
其中option_string中包含一个有效的单字符选项。若getopts命令在命令行中发现了连字符,那么它将用连字符后面的字符同option_string相比较。若有匹配,则把变量variable的值设为该选项。若无匹配,则variable设为?。当getopts发现连字符后面没有字符,会返回一个非零的状态值。Shell程序中可以利用getopts的返回值建立一个循环。
while getopts "rso" arg ; do
case $arg in
r )
rebuild=-r
;;
s )
small=-s
;;
o )
optim=-o
;;
? ) # 不认识
echo error
echo -e $usage
exit 1
;;
esac
done
2.sed
sed编辑器逐行处理输入,然后把结果发送到屏幕。
-i选项:直接作用源文件,源文件将被修改。
sed命令和选项:
a\ | 在当前行后添加一行或多行 |
c\ | 用新文本替换当前行中的文本 |
d | 删除行 |
i\ | 在当前行之前插入文本 |
h | 把模式空间的内容复制到暂存缓冲区 |
H | 把模式空间的内容添加到缓冲区 |
g | 取出暂存缓冲区的内容,将其复制到模式缓冲区 |
G | 取出暂存缓冲区的内容,将其追加到模式缓冲区 |
l | 列出非打印字符 |
p | 打印行 |
n | 读入下一行输入,并从下一条而不是第一条命令对其处理 |
q | 结束或退出sed |
r | 从文件中读取输入行 |
! | 对所选行以外的行应用所有命令 |
s | 用一个字符串替换另外一个字符串 |
替换标志:
g | 在行内进行全局替换 |
p | 打印行 |
w | 将行写入文件 |
x | 交换暂存缓冲区和模式空间的内容 |
y | 将字符转换成另外一个字符 |
sed例子:
打印:p命令
sed ‘/abc/p’ file |
打印file中包含abc的行。默认情况sed把所有行都打印到屏幕,如果某行匹配到模式,则把该行另外再打印一遍 |
sed -n ‘/abc/p’ file | 和上面一样,只是去掉了sed的默认行为,只会打印匹配的行 |
删除:d命令
sed ‘3,$d’ file | 删除从第3行到最后一行的内容。 |
sed ‘$d’ file | 删除最后一行的内容 |
sed ‘/abc/d’ | 删除包含abc的行。 |
sed ‘3d’ file | 删除第三行的内容 |
替换:s命令
sed ‘s/abc/def/g’ file | 把行内的所有abc替换成def,如果没有g,则只替换行内的第一个abc |
sed -n ‘s/abc/def/p’ file | 只打印发生替换的那些行 |
sed ‘s/abc/&def/’ file | 在所有的abc后面添加def(&表示匹配的内容) |
sed -n ‘s/abc/def/gp’ file | 把所有的abc替换成def,并打印发生替换的那些行 |
sed ‘s#abc#def#g’ file |
把所有的abc替换成def,跟在替换s后面的字符就是查找串和 替换串之间的分割字符,本例中试# |
指定行的范围:逗号
sed -n ‘/abc/,/def/p’ file | 打印模式abc到def的行 |
sed -n ‘5/,/def/p’ file | 打印从第五行到包含def行之间的行。 |
sed /abd/,/def/s/aaa/bbb/g | 修改从模式abc到模式def之间的行,把aaa替换成def |
多重编辑-e
sed -e ‘1,3d’ -e ‘s/abc/def/g’ file | 删除1-3行,然后把其余行的abc替换成def |
读文件:r命令
sed ‘/abc/r newfile’ file | 在包含abc的行后读入newfile的内容 |
写文件:w命令
sed ‘/abc/w newfile’ file | 在包含abc的行写入newfile |
追加:a命令
sed ‘/abc/a\def’ file | 在包含abc的行后新起一行,写入def |
插入:i命令
sed ‘/abc/i\def’ file | 在包含abc的行前新起一行,写入def |
修改:c命令
sed ‘/abc/c\def’ file | 在包含abc的行替换成def,旧文本被覆盖 |
读取下一行:n命令
sed ‘/abc/{n ; s/aaa/bbb/g;}’ file | 读取包含abc的行的下一行,替换aaa为bbb |
转换:y命令
sed ‘y/abc/ABC’ file | 将a替换成A,b替换成B,c替换成C(正则表达式元字符不起作用) |
退出:q命令
sed ‘/abc/{ s/aaa/bbb/ ;q; }’ file | 在某行包含了abc,把aaa替换成bbb,然后退出sed。 |
暂存和取用:h命令(把模式行存储到暂存缓冲区)和g(取出暂存缓冲区的行并覆盖模式缓冲区)G(取出临时缓冲区的行)命令
h和g是复制行为(覆盖),H和G表示追加。
sed -e ‘/abc/h’ -e ‘$G’ file | 包含abc的行通过h命令保存到暂存缓冲区,在第二条命令汇中,sed读到最后一行$时,G命令从暂存缓冲区中读取一行,追加到模式缓冲区的后面。即所有包含abc的行的最后一行被复制到文件末尾。 |
sed -e ‘/abc/{h; d;}’ -e ‘/def/{g; }’ file |
包含abc的行会移到包含def的行上,并进行覆盖。 |
暂存和互换:h和x命令
sed -e ‘/abc/h’ -e ‘/def/x’ file |
包含abc的行会被换成def的行。 |
转载于:https://www.cnblogs.com/live-in-city/p/3494171.html
shell 指令使用整理相关推荐
- linux shell指令大全整理
linux shell指令 shell是一种脚本语言, 需要有编译器执行 bash是linux下默认的shell sh是unix下默认的shell 在ubuntu中bash和sh都可用 执行 #!/b ...
- php exec执行多条命令,小技巧:在PHP中调用多条shell指令
原标题:小技巧:在PHP中调用多条shell指令 有时候,在持续集成的过程中,需要通过网页在目标服务器上执行shell指令,今天就列举一个实例进行讲解. 比如,我们需要能通过网页将SVN update ...
- linux shell 指令 诸如-d, -f, -e之类的判断表达式(转)
linux shell 指令 诸如-d, -f, -e之类的判断表达式(转) 一.文件比较运算符 e filename 如果 filename存在,则为真 如: [ -e /var/log/syslo ...
- 随手记——Linux中C语言调用shell指令的三种方式
在学习资料满天飞的大环境下,知识变得非常零散,体系化的知识并不多,这就导致很多人每天都努力学习到感动自己,最终却收效甚微,甚至放弃学习.我的使命就是过滤掉大量的无效信息,将知识体系化,以短平快的方式直 ...
- gitlab runner下载安装注册+卸载 + shell指令没执行的问题
什么是gitlab CI/CD 简单来说,CI的作用是验证提交的代码是否符合规范.主要起到一个验证的作用.CD的作用主要是部署,测试环境的部署,正式环境的发布,制品的生成,镜像的构建. Runner ...
- shell指令可以直接在终端输入吗_shell不是LInux系统的壳吗?咋还能脚本编程了?...
小豆丁:老张!老张!你快来! 老张:咋啦?火烧屁股啦?急急忙忙的! 小豆丁:啥火烧屁股啊,我是遇到问题了! 老张:也对,你只有遇到问题的时候才会找我!说吧,啥事? 小豆丁:老张啊,你不是刚给我讲完Li ...
- 经典shell面试题整理
一.取出/etc/passwd文件中shell出现的次数 问题:下面是一个/etc/passwd文件的部分内容.题目要求取出shell并统计次数,shell是指后面的/bin/bash,/sbin/n ...
- shell 指令集锦
0 shell简介 Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁. Shell 既是一种命令语言,又是一种程序设计语言. Shell 脚本(shell script),是 ...
- linux shell指令 amp,shell入门基础amp;常见命令及用法
shell shell是一个命令解释器,实际是一个程序,/bin/bash,linux中所有的命令都由它来解释,有自己的语法 shell脚本 以.sh结尾 shell语法+linux命令 注释: 单行 ...
最新文章
- 逐飞关于第15届智能车竞赛相关工作
- Ajax的get、post和ajax提交
- java+getactionmap_Struts2 使用OGNL遍历map方法详解
- Java根据出生年月日获取到当前日期的年月日
- python如何监听toast提示信息_python 怎样获取toast?
- mysql子查询更改指定数据库_MySQL数据库update更新子查询
- Silverlight与微软技术:微软抛弃Silverlight了吗?
- OpenCV阈值分割
- 萤石开放平台——摄像头画面怎么完成一键分享?
- 解决鼠标滚动时页面上下跳动的问题
- excel服务器文件只读,excel只读服务器
- 车路协同、智慧交管、自动驾驶场景应有尽有,智能交通行业实战课火爆开启...
- python调试程序的方法_调试Python程序的四种方法
- 凸集、凸函数与凸规划
- 网络版AIS接收机R400N
- 深入理解蓝牙5之高数据传输率
- 【nginx动静分离】
- 魔兽世界大秘境里服务器维护,魔兽世界9.0:不知道大秘境注意事项及优选职业?来这里我教你...
- 微信视频号直播1000个看过多少钱
- 能不能加个人物关系表?——《程序员羊皮卷》书评(5)
热门文章
- 20145237第六周学习总结
- jQuery的ajax()、post()方法提交数组,参数[] 问题
- Navigation Drawer详解-Google推出的用来取代Sliding Menu的控件(一
- 5.VMware View 4.6安装与部署-安装view agent与模版
- ASMCMD 命令详解
- Android 使用MediaPlayer播放assets或者raw目录的音频文件
- onnx模型推理(python)
- 使用TCP来进行数据通信
- pandas如何统计所有列的空值,并转化为list?
- 页面按钮埋点+跟踪location.search