原文: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-1441】Min 裴蜀定理 + 最大公约数

    1441: Min Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 471  Solved: 314[Submit][Status][Discuss] De ...

  2. 【poj2122】 Optimal Milking

    http://poj.org/problem?id=2112 (题目链接) 题意 有K个能挤M头奶牛的挤奶机和C头奶牛,告诉一些挤奶机和奶牛间距离,求最优分配方案使最大距离最小. Solution 先 ...

  3. JSP的JSTL标签使用

    JSTL标签和asp.net中的webform控件很像,但是功能确比asp.net的强很多. 配置过程,从最简单的项目开始: 1.下载JSTL标签库:http://archive.apache.org ...

  4. PHP的几个常用加密函数

    在php的开发过程中,常常需要对部分数据(如用户密码)进行加密 一.加密类型: 1.单向散列加密 就是把任意长度的信息进行散列计算,得到固定长度的输出,这个散列计算过程是单向的,即不能对固定长度的输出 ...

  5. MyCCL特征码定位原理学习

    这段时间学习WEB方面的技术,遇到了木马免杀特征码定位的问题,这里做一下学习笔记. 这里对MyCCL的分块原理做一下探究 对指定文件生成10个切块 对指定的木马进行切块后,文件列表是这样的. 注意这里 ...

  6. Linux安装pdo_mysql模块

    网站不能访问 查看apache日志 PHP Fatal error: Uncaught exception 'PDOException' with message 'could not find dr ...

  7. RabbitMQctl命令

    RabbitMQControl RabbitMQ提供了可视化的网页供我们进行一些配置与操作,但是ctl的命令比UI来的专业的多,一些UI无法完成的操作就需要使用ctl命令来进行处理了 这里是官方的文档 ...

  8. C#位操作与枚举的应用

    看到代码里有用位操作来判断条件的,以前没有这么用过,做个笔记: int add = 2; int modify = 4; int delete = 8; Console.WriteLine((add ...

  9. 基本概率分布Basic Concept of Probability Distributions 6: Exponential Distribution

    PDF version PDF & CDF The exponential probability density function (PDF) is $$f(x; \lambda) = \b ...

  10. CF 268E Playlist(贪心)

    题目链接: 传送门 Playlist time limit per test:1 second     memory limit per test:256 megabytes Description ...