shell脚本常用语句用法笔记

脚本基本语句用法笔记

  • grep

-i 查询时不区分大小写
-n打印匹配的行号
-v 打印不匹配的行
-AX包括每次匹配之后X行
-BX包括每次匹配之后X行
cat /etc/passwd |grep student (-i 表示不关心大小写)

正则表达式中 ^代表开始 $代表结束
cat /etc/passwd|grep  ^#  -v     (去掉以#作为起始的行)
cat /etc/passwd|grep  ^$  -v     (去掉空行)

-E增强符号的使用

cat inittab |grep -Ev  ‘(^#|^$)’  等价于   cat inittab |grep -Ev ‘^(#|$)

文件处理后重新保存错误示范:

cat inittab |grep -Ev ‘^(#|$)’ >inittab  这样会得到一个空文件。

解决办法:

cat inittab |grep -Ev ‘^(#|$)’ >inittab.tmp ;cat ./inittab.tmp > inittab;rm -f ./inittab.tmp
  • sed
sed  ‘s/ search /  replace / ’   或者 ‘s#    #    # ’ 或者 ‘s@    @    @’ 
echo “/usr/local” |sed ‘s@/usr@/var@’
cat ./iptables.list | sed ‘s/172.24./10.0./’  重新cat ./iptables.list后发现内容并没有发生改变再次印证了sed只是改变的流

sed 的搜索默认是在一行里找到第一个符合条件的信息就停止搜索行内剩余的信息。过想继续搜索行内的其他符合条件的信息需要添加g形成

s/  /   /g’ 的形式   ‘s/  /   /i’可以忽略大小写
cat ./iptables.list | sed ‘1,50s/172.24./10.0./150行中的进行替换
cat animal.txt |sed ‘/cat/,/dog/s/$/<---------/’传说中的猫鼠游戏可以实现模糊行的匹配

遇到cat开始dog结束 在这些符合的行中在结尾添加<—————
如果没有遇到dog那就一直执行一直到最后
sed的删除操作 cat iptables.list |sed ‘/^#/d’ 形式就是如此
要实现将#开始的 或者空行都删掉

cat iptables.list |sed ‘/^#/d’ |sed ‘/^$/d’
cat iptables.list |sed  -e  ‘/^#/d’ -e  ‘/^$/d’
  • wc对行数的统计

cat /etc/passwd |wc
37 63 1737
出现有37行 63个word 1737个字符(character)
cat /etc/passwd |wc -w
63
cat /etc/passwd |wc -l
37
cat /etc/passwd |wc -c
1737
cat /etc/passwd |grep -i studenttt |wc -l 用该命令的输出数值来判断是否存在,cat命令在不存在符合要求的时候,是不会输出信息的,故而不能做判断用。

  • awk

awk’ /匹配字符串/’文件名 匹配字符串可以用正则表达式来表示
awk ‘/root/’ /etc/passwd 等价于 grep root /etc/passwd
awk ‘{处理动作}’文件名
awk -F:’{print 113}’ /etc/passwd
awk ‘/匹配字符串/ {处理动作}’文件名
awk -F:’/root/{print 1,1,3}’ /etc/passwd
awk ‘{print 1,1,3}’ ~/names 可以找出第一列和第三列的内容
awk ‘{print 1,1,3}’ ~/names 该表达式中逗号表示一个空格的分隔符
如果该表达式中逗号用空格代替,效果等价于awk ‘{printf 11<script id="MathJax-Element-5" type="math/tex">1</script>3}’

~/names  仅仅把第1,3列拼接在一起。
print函数将变量和字符夹杂着输出,如同linux中的echo命令
shell>date
Wed Feb 24 10:22:28 CST 2010
shell> date|gawk’{print “Month:”$2”\nYear:”,$6}’
Month:Feb
Year:2010

最近在读一个脚本,先把里面这些晦涩的脚本用法摘出来,磨刀不误砍柴工。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/403973.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CI框架分页类

分页类1.分页类参数说明 base_url > 指向你的分页所在的控制器类/方法的完整的 URL, total_rows > 数据的总行数, per_page > 每页显示的项目, uri_segment > 自动检测哪一段包含页数, num_links > 放在当前页前后显示的链接数, 2.分页类使用 $this->load-&g…

对象运算符.和[]的用法

相同点&#xff1a;它们的第一个运算数都是对象或者数组。 区别&#xff1a;"."将第二个运算数作为对象的属性读写。第二个运算数只能是合法的标识符 "[]"将第二个运算数作为数组的下标来读写。第二个运算数可以是任何类型的值甚至是undefined&#xff0c;…

Linux中对文件描述符的操作(FD_ZERO、FD_SET、FD_CLR、FD_ISSET

在Linux中&#xff0c;内核利用文件描述符&#xff08;File Descriptor&#xff09;即文件句柄&#xff0c;来访问文件。文件描述符是非负整数。打开现存文件或新建文件时&#xff0c;内核会返回一个文件描述符。读写文件也需要使用文件描述符来指定待读写的文件。宏FD_ZERO、F…

Host SMBus controller not enabled的解决方法

From: http://blog.csdn.net/starmlk/article/details/7982077 SMBus 目录 SMBus与I2C的差别SMBus 是 System Management Bus 的缩写&#xff0c;是1995年由Intel提出的&#xff0c;应用于移动PC和桌面PC系统中的低速率通讯。它主要是希望通过一条廉价并且功能强大的总线&…

gitlab服务器搭建

搭建教程&#xff1a;http://blog.csdn.net/discoverer100/article/details/51814171#reply

【Bugly干货分享】微信文件微起底Ⅰ

Bugly 技术干货系列内容主要涉及移动开发方向&#xff0c;是由 Bugly 邀请腾讯内部各位技术大咖&#xff0c;通过日常工作经验的总结以及感悟撰写而成&#xff0c;内容均属原创&#xff0c;转载请标明出处 微信大家都在用&#xff0c;但微信的本地文件到底隐藏着什么样的信息呢…

如何使antd中table表格不换行

.ant-table-thead > tr > th{ white-space:nowrap; } .ant-table-row td{ white-space:nowrap; } 在对用的组件style加上上面代码

由旋转矩阵求旋转中心

在图像的复合变化过程中&#xff0c;通常会用到Matrix矩阵&#xff0c;一般的过程是先构造仿射变换矩阵&#xff0c;然后对图像进行仿射变换&#xff0c;如&#xff1a;围绕点&#xff08;100&#xff0c;100&#xff09;旋转30度(sin 30 0.5 &#xff0c;cos 30 0.866)&…

git服务器搭建

本文主要记录在Ubuntu 16.04操作系统中搭建GitLab服务器的操作记录&#xff0c;以下是操作步骤&#xff08;主要参考资料&#xff1a;https://about.gitlab.com/downloads/#ubuntu1604&#xff09;。1.安装依赖包&#xff0c;运行命令sudo apt-get install curl openssh-server…

Ubuntu桌面版网络设置

先来说下我的经验吧&#xff0c;我觉得Ubuntu桌面版中网络配置最好的方法是用Network-Manager这个带界面的软件&#xff0c;因为桌面版中这个软件是自动启动的。理由如下&#xff1a; 1. 如果要把这个软件设置为开机时不启动&#xff0c;得执行&#xff1a;chkconfig network-…

ant-design之form-重置表单多个值

重置form表单中的某一个值或者一次重置多个值 watch: {databaseType: function(curr, old) {this.getMyTableData [];this.form.resetFields([databaseSource,"databaseName","tableName",""]);},},

2016matlab安装

百度云的下载链接&#xff08;永久有效&#xff09;链接&#xff1a;https://pan.baidu.com/s/1dGZB4q9 密码&#xff1a;pfl3Matlab用途&#xff1a;点击打开链接与网盘资源相对应的安装教程1.将网盘中的3个文件下载下来后&#xff0c;解压&#xff08;在当前路径下&#xff0…

C#类、接口、虚方法和抽象方法-抽象类与接口的区别与联系

C#抽象类和接口之间在对于抽象类定义的支持方面具有很大的相似性&#xff0c;甚至可以相互替换&#xff0c;因此很多开发者在进行抽象类定义时对于抽象类和接口的选择显得比较随意。其实&#xff0c;两者之间还是有很大的区别的。首先&#xff0c;以抽象类的方式定义一个公共的…

Nginx_查看并发连接数

通过查看Nginx的并发连接&#xff0c;我们可以更清除的知道网站的负载情况。Nginx并发查看有两种方法&#xff08;之所以这么说&#xff0c;是因为笔者只知道两种&#xff09;&#xff0c;一种是通过 web界面&#xff0c;一种是通过命令&#xff0c;web查看要比命令查看显示的结…

struct作为map的key时,需要重载该结构体

当结构体作为map中的key时&#xff0c;这个结构体必须重载"<"运算符, 否则将出错&#xff0c;看我完整代码&#xff1a; #ifndef WIN32#include <string.h>#else#include <string>#endif#include <iostream>#include <map>using namespa…

解决vuex中store保存数据,刷新页面会清空得问题

1.在App.vue下加入 mounted() {window.addEventListener("unload", this.saveState);},methods: {saveState() {sessionStorage.setItem("state", JSON.stringify(this.$store.state));}}2.在store下的index.js文件下修改 state:sessionStorage.getItem(…

arm MMU详解

一、MMU的产生许多年以前&#xff0c;当人们还在使用DOS或是更古老的操作系统的时候&#xff0c;计算机的内存还非常小&#xff0c;一般都是以K为单位进行计算&#xff0c;相应的&#xff0c;当时的程序规模也不大&#xff0c;所以内存容量虽然小&#xff0c;但还是可以容纳当时…

welcome

我的博客&#xff1a;http://www.tanglei.name转载于:https://blog.51cto.com/tl3shi/910602

二叉树的建立与三种遍历

树是一种数据结构&#xff0c;为什么叫它“树”&#xff0c;因为它倒过来就是一棵树 根在上&#xff0c;而叶在下 其概念主要有根、父、子、深、叶等&#xff0c; 如上图&#xff1a;A为这棵树的根 B为D的父&#xff0c;而D则为B的子 E、F、G互为兄弟, D也可以叫叶 这也是一棵深…

vue中如何设置和清除定时器setInterval

data中生明定时器 方法里使用和清除定时器