原文:http://note.youdao.com/share/?id=cd2ad6e6d5db2b347f92958efc2bdbc1&type=note

正则表达式与通配符:

一、介绍:
1.正则表达式用来在文件中匹配符合条件的字符串,正则是包含匹配。grep、awk、sed等命令可以支持正则表达式
2.通配符用来匹配符合条件的文件名,通配符是完全匹配,ls、find、cp这些命令不支持正则表达式,所以只能用使用shell自己的通配符来进行匹配了。
二、基础正则表达式:
grep "下列" demo.txt
".*":匹配任意字符任意次
"^$":匹配空行
"a*":匹配a零次或多次,所以可以配所有内容
"^a":匹配以a开头的行
"aa*"匹配两个连续的a的行
元字符
作用
*
前一个字符匹配零次或任意多次
. 匹配除了换行符以外任意一个字符
^ 匹配行首,例如:^hello会匹配hello开头的行。
$
匹配行尾,例如:hello$会匹配以hello结尾的行。
[] 匹配中括号中指定的任意一个字符,只匹配一个字符。
例如:[aoeiu]匹配任意一个元音字母;[0-9]匹配任意一个数字[a-z][0-9]匹配小写字母和一位数字构成的两个字符的字符串
[^] 匹配除中括号的字符以外的任意一个字符,例如:[^0-9]匹配任意一位非数字的字符;[^a-z]表示匹配任意一位非小写字母的字符
\
转移符。用于取消对特殊符号的含义
\{n\}
表示其前面的字符敲好出现n次,例如:[0-9]\{4\}匹配4位数字;[1][3-8][0-9]\{9\}匹配手机号码(第一位必须以1开头第二位必须是3和8之间的第三位以后是1到9中的数字匹配9次)
\{n,m\}
表示其前面的字符至少出现n次,最多出现m次。例如:[a-z]\{6,8\}匹配小写字母6到8次(位)



字符截取:
    cut字段提取命令
        介绍: 缺点是无法以空格作为分隔符的应用
  [root@localhost]#cut[选项] 文件名
    选项:
    -f列号:    提取第几列
    -d分隔符:    按照指定分隔符冯列
    
我想提取系统中除root以外的能够登录系统的用户:
[root@localhostA1 demo]# cat /etc/passwd | grep /bin/bash | grep -v root | cut -d ":" -f 1
fengtaotao

    printf命令(格式化输出命令)
    介绍:
    [root@localhost]#printf '输出类型输出格式' 输出内容
    输出类型:
    %ns:    输出字符串,n是数字指代输出几个字符
    %ni:    输出整数。n是数字指代输出几个数字
    %m.nf:    输出浮点数,m和n是数字,指代输出的整数位数和小数位数。如%8.2f表示输出8位数其中有两位小数,6位整数。
    输出格式:
\a
输出警告声音
\b 输出退格键,也就是backspace键
\f
清楚屏幕
\n
换行
\r
回车,也就是Enter键
\t
水平输出退格键,也就是Tab键
\v
垂直输出退格键,也就是Tab键

例如:

[root@localhost]# printf "%s\t %s\t %s\t %s\t %s\t %s\n" $(cat student.txt) 这样才能正确的输出格式




 
    awk命令:
       介绍:
     [root@localhost]#awk '条件1{动作1} 条件2{动作2}...' 文件名
        条件(Pattern)
        一般使用关系表达式作为条件
        x>10    判断变量x是否大于10
        x>=10    大于等于
        x<=10    小于等于
        动作(Action)
        格式化输出
        流程控制语句
    实例:
     [root@localhost]# awk '{printf $2 "\t" $6"\n" }' student.txt
     上述命令是:直接动作 将student.txt的$2第二列 格式\t为tab 与 第6列 +\n换行的输出格式出来 
    
    
  BEGIN条件  
FS内置变量 修改分隔符
END:在所有内容 执行完后在执行一条END中的动作
所有数据 处理完成后会在打印一条aaaaaa数据


  sed命令:
    介绍:sed是一种几乎包括在所有unix平台(包括Linux)的轻量级流编辑器。sed主要是用来将数据进行选取、替换、删除、新增的命令。
    [root@localhost]#sed [选项]'[动作]'文件名
        选项:
        -n:    一般sed命令会把所有数据都输出到屏幕,如果加入此选择,则只会把经过sed命令处理的行输出到屏幕。(只显示动作内容)
        -e:    允许对输入数据应用多条sed命令编辑
        -i:    用sed的修改结果直接修改读取数据的文件,而不是由屏幕输出(写入)
    动作:
a\
追加,在当前行后添加一行或多行。添加多行时,除最后一行外,每行末尾需要用"\"代表数据末完结。
c\
行替换,用c后面的字符串替换原数据行,替换多行时,除最后一行外,每行末尾需用"\"代表数据未完结。
i\
插入,在当前行插入一行或多行。插入多行时,出最后一行外,每行末尾需要用"\"代表数据未完结
d
删除,删除指定行
p
打印print 输出指定的行
s
字符替换,用一个字符串替换另外一个字符串。格式为"行范围s/旧字符串/新字符串/g" (和vim中的替换格式类似)。

示例:1

示例:2
示例3
 
 


字符处理命令:
1.排序命令sort
 [root@localhost]#sort[选项] 文件名
选项:
-f:    忽略大小写
-n:    以数值型进行排序,默认使用字符串型排序
-r:    反向排序
-t:    指定分隔符,默认是分隔符是制表符
-k n[,m]:    按照指定的字段范围排序。从第n字段开始,m字段结束(默认到行尾)
 
[root@localhost]# sort /etc/passwd    排序用户信息文件
[root@localhost]#sort -r /etc/passwd 倒序以字母倒序


统计命令wc:
[root@localhost~]#wc[选项] 文件名
选项:
-1:    只统计行
-w:    只统计单词
-m:    只统计字符
[root@localhost]#wc /etc/passwod
[root@localhost]#wc -l /etc/passwod
[root@localhost]#wc -lm /etc/passwod


条件判断:
两种判断格式:
[root@localhost~]#test -e /root/install.log
[root@localhost~]#[ -e /root/install.log ]
例如: echo $?来判断上一个命令是否正确执行,正确返回0否则返回对应的数字
例如2:
[root@localhost]# [ -d /root ]&& echo 'yes' || echo "no"  
yes
[root@localhost]# [ -f /root/install.log ] && echo 'yes' || echo 'no'
yes
如果[]中的判断成立那么输出yes否者输出no 用逻辑与和逻辑或
1.按照文件类型进行判断:
 
2.按照文件权限进行判断
3.两个文件之间进行比较
例如:
 
4.两个整数之间比较
5字符串的判断
 
6;多从条件判断
 

shell学习之路:shell基础大全2的更多相关文章

  1. shell学习之路:shell基础大全1

    http://note.youdao.com/share/?id=a9d02257b639c94323c818bc38423919&type=note   别名命令alias:http://n ...

  2. python学习之路-day2-pyth基础2

    一.        模块初识 Python的强大之处在于他有非常丰富和强大的标准库和第三方库,第三方库存放位置:site-packages sys模块简介 导入模块 import sys 3 sys模 ...

  3. shell学习笔记1---shell编程基础

    Shell是什么? Shell 是一个应用程序,它连接了用户和 Linux 内核,让用户能够更加高效.安全.低成本地使用 Linux 内核,这就是 Shell 的本质. Shell 本身并不是内核的一 ...

  4. Linux学习之路--shell学习

    shell基础知识 什么是Shell Shell是命令解释器(command interpreter),是Unix操作系统的用户接口,程序从用户接口得到输入信息,shell将用户程序及其输入翻译成操作 ...

  5. Python学习之路-Day1-Python基础

    学习python的过程: 在茫茫的编程语言中我选择了python,因为感觉python很强大,能用到很多领域.我自己也学过一些编程语言,比如:C,java,php,html,css等.但是我感觉自己都 ...

  6. Python学习之路-Day2-Python基础2

    Python学习之路第二天 学习内容: 1.模块初识 2.pyc是什么 3.python数据类型 4.数据运算 5.bytes/str之别 6.列表 7.元组 8.字典 9.字符串常用操作 1.模块初 ...

  7. Python学习之路-Day2-Python基础3

    Python学习之路第三天 学习内容: 1.文件操作 2.字符转编码操作 3.函数介绍 4.递归 5.函数式编程 1.文件操作 打印到屏幕 最简单的输出方法是用print语句,你可以给它传递零个或多个 ...

  8. Shell学习笔记之shell脚本和python脚本实现批量ping IP测试

    0x00 将IP列表放到txt文件内 先建一个存放ip列表的txt文件: [root@yysslopenvpn01 ~]# cat hostip.txt 192.168.130.1 192.168.1 ...

  9. shell学习之路(整理ing)

    学习 shell脚本之前的基础知识 http://www.92csz.com/study/linux/12.htm SHELL 脚本 http://www.92csz.com/study/linux/ ...

随机推荐

  1. 【BZOJ-4568】幸运数字 树链剖分 + 线性基合并

    4568: [Scoi2016]幸运数字 Time Limit: 60 Sec  Memory Limit: 256 MBSubmit: 238  Solved: 113[Submit][Status ...

  2. 【poj2417】 Discrete Logging

    http://poj.org/problem?id=2417 (题目链接) 题意 求解$${A^X≡B~(mod~P)}$$ Solution BSGS. 细节 map TLE飞,只好写了hash挂链 ...

  3. codeforces 613D:Kingdom and its Cities

    Description Meanwhile, the kingdom of K is getting ready for the marriage of the King's daughter. Ho ...

  4. Web 四种常见的POST提交数据方式

    HTTP/1.1 协议规定的 HTTP 请求方法有 OPTIONS.GET.HEAD.POST.PUT.DELETE.TRACE.CONNECT 这几种.其中 POST 一般用来向服务端提交数据,本文 ...

  5. A.Kaw矩阵代数初步学习笔记 9. Adequacy of Solutions

    “矩阵代数初步”(Introduction to MATRIX ALGEBRA)课程由Prof. A.K.Kaw(University of South Florida)设计并讲授. PDF格式学习笔 ...

  6. GNU CMAKE 笔记

    最近在调试OJ, 忙了4天多, 最后的问题是judge模块不能正常工作. judge 模块就是两个C++源文件, 它的工作是 从数据库获取用户提交的源码 测评 将测评结果写到数据库 测评部分是与数据库 ...

  7. Visual Studio 创建WebServer

    1.文件-->新建-->项目 2.Web-->Visual Studio 2012-->ASP.NET 空Web应用程序 3.右键项目-->添加-->新建项 4.选 ...

  8. IDEA新建MAVEN项目时速度缓慢

    原因 IDEA根据maven archetype的本质,其实是执行mvn archetype:generate命令,该命令执行时,需要指定一个archetype-catalog.xml文件. 该命令的 ...

  9. UVA1395 Slim Span(枚举最小生成树)

    题意: 求最小生成树中,最大的边减去最小的边 最小值. 看了题解发现真简单=_= 将每条边进行从小到大排序,然后从最小到大一次枚举最小生成树,当构成生成树的时候,更新最小值 #include < ...

  10. linux中权限的修改

    修改访问权限的linux名是:Linux访问权限的问题是这样子的:比如 d rwx rwx rwx ,d是文件所在的文件,后面有9位,分别代表不同者的权限.第一个rwx代表这文件的所有者的权限,r是r ...