Linux基础知识(八)输出重定向,正则表达式

1.输出重定向

  • 标准输出:是将信息输出在终端
  • 标准错误输出:在执行命令的过程中所产生的错误也是输出在终端
  • 标准输入:从键盘输入

 1.2 标准输出重定向

作用:将本来要显示在终端上的信息重定向到一个文件中

实现方法:

  • >        将文件中原有的内容全部删除
  • >>     在文件原有的基础后追加新的内容

 1.3 标准错误输出重定向

  • 2 >           
  • 2>>

例:将正确和错误的信息都保存到同一个文件中

ls /dad / &> 1.txt

2. 通配符

  • *         #任意长度的任意字符

例:删除根下以a开头的文件

rm -rf a*
  • ?       #一个长度的任意字符  

例:删除根以下文件名第二个是a的文件

rm -rf ?a
  • ;       #链接多个命令

 例:

cd - ; cd -
  • &&     #只有前面的命令执行成功,后面的命令才会执行
  • ||         #只有前面的命令执行失败,才会执行后面的命令
  • #         #注释行(描述信息,不执行)
  • |          #传递命令的执行结果
  • ~         #家目录
  • -         #上次所在的目录
  • $       #变量前加的符号
  • /        #路径分隔符(或者根)
  • >    >>    #重定向
  • <<      #用来打印菜单

例:

cat << EOF
> 1
> 2
>EOF

引号:

  • ' '          #弱引用,引用的内容原样输出
  • " "        #强引用,引用变量会变成变量的值
  • ` `        #命令替换
  • .          #表示当前目录
  • ..         #上一级目录
  • { }       #花括号展开

例:

mkdir {1..10}.dir
展开后为创建1.dir 2.dir 3.dir 4.dir 5.dir 6.dir 7.dir 8.dir 9.dir 10.dir目录

3.正则表达式

构成:一堆特殊符号和字母构成--元字符

作用:通过对文本中的内容进行过滤筛选,然后对文本中的内容进行过滤筛选

通配符和正则表达式的区别

通配符是对文件名进行区别,正则表达式是对文件的内容进行匹配

3.1 正则表达式的种类:

  • 基础正则表达式
  • 扩展正则表达式

3.2 通常结合三个命令来使用

  • gerp 
  • sed
  • awk

3.2.1 grep

作用:对文件中的内容进行过滤

格式:
grep [选项] 匹配内容 文件名

选项:

  • -v           #取反
  • -o           #仅仅显示出所匹配的内容
  • -E          #使用扩展
  • -i            #忽略大小写

例1:从a.txt文件中过滤出不包含root的行

grep -v "root" a.txt

例2:从a.txt文件中过滤出包含root的行

grep "root" a.txt

例3:从a.txt文件中过滤出仅仅显示root的行

grep -o "root" a.txt

例4:统计a.txt文件中有多少个root

grep -o "root" a.txt | wc -w

3.3 正则中元字符

3.3.1 匹配单个字符

  • .             #表示任意一个字符(可以空格,逗号,字母,数字...)

例:匹配a前面有一个字符的行

grep ".a" 11.txt

  • [ ]           #表示范围内中的其中一个
    • [123456]          #表示匹配其中的任意一个数字
    • [0-9]                #匹配所有的数字
    • [A-Z]               #匹配所有的大写字母
    • [a-z]                #匹配所有的小写字母
    • [a-Z]               #匹配所有的字母

例1:匹配文件中包含数字的行

grep [0-9] file

例2:匹配文件中包含a的行

grep "a"  file

3.3.2 用字符集的方式表达

  • [[:space:]]              #表示一个空格
  • [[:digit:]]                #表示任意一个数字
  • [[:lower:]]              #表示任意一个小写字母
  • [[:upper:]]             #表示任意一个大写字母
  • [[:alpha:]]             #表示任意一个字母
  • [[:alnum:]]            #表示任意一个数字+字母
  • [[:punct:]]             #表示任意一个标点符号

  例1:匹配一个包含小写字母的行

grep [a-z] file
grep [[:lower:]] file

例2:匹配以#开头的行

grep ^[#] file

例3:匹配除了a以外的任意字符

grep [^a] file

例4:过滤没有qaz的行

grep [^qaz] file

3.3.3 显示匹配到的行

  • -An        #显示匹配到的内容行的后n行
  • -Bn        #显示匹配到的内容行的前n行
  • -Cn        #显示匹配到的内容行的前后各n行

例:匹配到包含root的行的前3行

grep -B3 "root" file

3.3.4 匹配次数

  • *         #前面字符出现了任意次数(0,1,n)

例:a*

  • .*       #表示任意长度的任意字符

例:a.*b

grep "a.*b" 11.txt
  • ?        #表示前面字符出现最多一次

例1:b前面的a至少出现m次,最多出现n次

a \{m,n\}b
-E a{m,n}b

例2:过滤b前面的a最少一次,最多不限

grep -E "a{1, }b" 11.txt

例3:过滤b前的a最多1次

grep -E "a{1,1}b" 11.txt
grep -E "a?b" 11.txt

3.3.5 位置锚定

  • ^         #表示以n为开头的行
  • $        #表示以n为结尾的行

例:以yum为结尾的行

grep "yum$" file
  • \<n       #表示单词首部
  • n\>       #表示单词尾部
  • ^$        #表示空白行

3.3.5 分组

\(  \)          #将内容当做一个整体看待

\1

\2

例:在11.txt中过滤出现过两个相同数字的行

grep "\([[:digit:]]).*\1" 11.txt

4. 扩展正则表达式

4.1 基础正则

grep [选项] 匹配内容 文件名

4.2 扩展正则

grep -E 匹配内容 文件名
egrep 匹配内容 文件名

{1, }等同于+         #其前面的字符至少出现过1次

4.3 或 |

例:过滤出开头是a(不区分大小写)的行

egrep "^(a|A)" 11.txt
egrep "^[aA]" 11.txt

  • 27
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值