24.11.12 特殊符号与正则表达式

news/2024/12/16 21:14:35/文章来源:https://www.cnblogs.com/wjhit/p/18611143

特殊符号

;命令的分隔符
[root@oldboyedu ~]# pwd;whami;which pwo
/root
-bash: whami:未找到命令
which: no pwo in (/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/root/bin)

&&

&& 前面命令必须执行成功,才会往后执行
[root@oldboyedu ~]# ll wang.txt && echo wang
ls: 无法访问 'wang.txt': 没有那个文件或目录
[root@oldboyedu ~]# ll uniq.txt && echo wang
-rw-r--r-- 1 root root 65 10月 26 08:08 uniq.txt
wangeg:[root@oldboyedu ~]# cd /etc/ && tar zcvf test.tar.gz hosts
hosts
[root@oldboyedu etc]# 

||

|| 前面命令必须执行失败,才会执行后面的命令
[root@oldboyedu ~]# ll wang.txt || echo wang
ls: 无法访问 'wang.txt': 没有那个文件或目录
wang
[root@oldboyedu ~]# ech wang || ll uniq.txt 
-bash: ech:未找到命令
-rw-r--r-- 1 root root 65 10月 26 08:08 uniq.txt
[root@oldboyedu ~]# ll uniq.txt || echo wang
-rw-r--r-- 1 root root 65 10月 26 08:08 uniq.txteg:[root@oldboyedu ~]# cd oldboy || mkdir oldboy
-bash: cd: oldboy: 没有那个文件或目录
[root@oldboyedu ~]# ll
总用量 0
drwxr-xr-x   2 root   root           6 11月 12 12:50 oldboy
[root@oldboyedu ~]# cd oldboy || mkdir oldboy
[root@oldboyedu oldboy]# 

> 或1>

> 或者1> 标准正确输出重定向,只接受正确的结果
#并不是只有echo才可以往文件中追加内容,cat ls都可以,>重定向符号,表示把输出到屏幕上的东西输出到文件中,>表示先清空,在写入,哪怕指令是错误的,也是先清空文件原有内容
[root@oldboyedu oldboy]# echo aa > a.txt
[root@oldboyedu oldboy]# cat a.txt
aa
[root@oldboyedu oldboy]# echo b > a.txt
[root@oldboyedu oldboy]# cat a.txt 
b
[root@oldboyedu oldboy]# ech c >a.txt 
-bash: ech:未找到命令
[root@oldboyedu oldboy]# cat a.txt清空文件
[root@oldboyedu oldboy]# cat a.txt 
11
[root@oldboyedu oldboy]#  > a.txt 
[root@oldboyedu oldboy]# cat a.txt 
[root@oldboyedu oldboy]# 

>> 或 1>>

>> 或者 1>> 标准正确追加输出重定向,只接受正确的结果
#并不是只有echo才可以往文件中追加内容,cat ls都可以,>>追加重定向符号,表示把输出到屏幕上的东西追加到文件中,>>表示对文件原内容无影响
[root@oldboyedu oldboy]# cat a.txt 
111
[root@oldboyedu oldboy]# ls b.txt >> a.txt 
ls: 无法访问 'b.txt': 没有那个文件或目录
[root@oldboyedu oldboy]# cat a.txt 
111
[root@oldboyedu oldboy]# ls a.txt >> a.txt 
[root@oldboyedu oldboy]# cat a.txt 
111
a.txt

2>

2> 标准错误输出重定向,只要错误的结果
[root@oldboyedu oldboy]# cat a.txt 
111
a.txt
[root@oldboyedu oldboy]# echo aa 2> a.txt 
aa
[root@oldboyedu oldboy]# cat a.txt 
[root@oldboyedu oldboy]# ech aa 2> a.txt 
[root@oldboyedu oldboy]# cat a.txt 
-bash: ech:未找到命令

2>>

2>> 标准错误追加输出重定向,只要错误的结果
[root@oldboyedu oldboy]# cat a.txt 
-bash: ech:未找到命令
bb
[root@oldboyedu oldboy]# echo bb 2>> a.txt 
bb
[root@oldboyedu oldboy]# cat a.txt 
-bash: ech:未找到命令
bb
[root@oldboyedu oldboy]# cho 11 2>> a.txt 
[root@oldboyedu oldboy]# cat a.txt 
-bash: ech:未找到命令
bb
-bash: cho:未找到命令
###同时接收正确与错误的结果   因为重定向是先清空再写入,因此一般用的是追加重定向,两个用法一致
1、>> 文件 2>> 文件  #可以同时输出同一个文件中,也可以是不同文件
[root@oldboyedu oldboy]# cat a.txt 
-bash: ech:未找到命令
bb
-bash: cho:未找到命令
[root@oldboyedu oldboy]# cat b.txt 
[root@oldboyedu oldboy]# echo 11 >> a.txt 2>> b.txt 
[root@oldboyedu oldboy]# cat a.txt 
-bash: ech:未找到命令
bb
-bash: cho:未找到命令
11
[root@oldboyedu oldboy]# cat b.txt 
[root@oldboyedu oldboy]# ec 22 >> a.txt 2>> b.txt 
[root@oldboyedu oldboy]# cat a.txt 
-bash: ech:未找到命令
bb
-bash: cho:未找到命令
11
[root@oldboyedu oldboy]# cat b.txt 
-bash: ec:未找到命令2、>> 文件 2>&1  #>&1 这表示跟屁虫,是固定搭配,表示跟着前面的走
[root@oldboyedu oldboy]# cat b.txt 
-bash: ec:未找到命令
[root@oldboyedu oldboy]# echo 11 >> b.txt 2>&1
[root@oldboyedu oldboy]# cat b.txt 
-bash: ec:未找到命令
11
[root@oldboyedu oldboy]# ca a.txt >> b.txt 2>&1
[root@oldboyedu oldboy]# cat b.txt 
-bash: ec:未找到命令
11
-bash: ca:未找到命令
[root@oldboyedu oldboy]# echo 1 >> b.txt 2>>&1
-bash: 未预期的符号“&”附近有语法错误3、&>>文件  #是最简单的一种,不过结果如何都往同一个文件写
[root@oldboyedu oldboy]# cat b.txt &>> c.txt
[root@oldboyedu oldboy]# cat c.txt 
-bash: ec:未找到命令
11
-bash: ca:未找到命令
[root@oldboyedu oldboy]# lsl a.txt &>> c.txt 
[root@oldboyedu oldboy]# cat c.txt 
-bash: ec:未找到命令
11
-bash: ca:未找到命令
-bash: lsl:未找到命令

cat向文件写内容

标准写法:cat >> 文件 << EOF #退出输入EOF
其他写法:cat >> 文件 << a   #退出输a,要首尾呼应
[root@oldboyedu oldboy]# cat >> a.txt << EOF
> wang
> hu
> sun
> zhou
> zhao
> EOF
[root@oldboyedu oldboy]# cat a.txt 
-bash: ech:未找到命令
bb
-bash: cho:未找到命令
11
wang
hu
sun
zhou
zhao
[root@oldboyedu oldboy]# cat >> b.txt  << A
> 11
> 22
> A
[root@oldboyedu oldboy]# cat b.txt 
-bash: ec:未找到命令
11
-bash: ca:未找到命令
11
22
[root@oldboyedu oldboy]# cat >> c.txt << a
> 123
> 456
> a
[root@oldboyedu oldboy]# cat c.txt 
-bash: ec:未找到命令
11
-bash: ca:未找到命令
-bash: lsl:未找到命令
123
456

总结

#  注释或者命令提示符中的用户提示符 表示管理员 ~表示普通用户
$  获取变量内容 echo $PATH  awk取列  普通用户命令提示符
! 强制执行 wq! q!
|  命令的拼接,管道
;  命令的分隔符,不管前面的命令是否执行成功,都继续向后执行
&&  前面的命令必须执行成功,才会往后执行
||  前面的命令必须执行失败,才会往后执行
>  标准输出正确重定向 1> 先清空后追加
2>  标准错误输出重定向
>>  标准正确输出追加重定向 1>>
2>>  标准错误输出追加重定向
``  执行命令,优先级,优先执行``命令,把命令显示的东西留下,在执行其他命令
$()  执行命令,优先级,优先执行()命令,把命令显示的东西留下,在执行其他命令
""  双引号和不加引号可以解析变量内容
''  所见即所得,不能解析变量
~  家目录
.  当前目录
..  上一级目录
-  上一次所在目录 su 切换用户,不更新环境变量;su - 切换用户,更新环境变量
*  表示所有
{}  生成序列
[]  查找序列
?  表示任意单个字符

正则表达式

作用:用来过滤文件中的字符串
grep '' 文件 -o  #表示显示过滤的过程
1、^ 过滤以什么开头的行
grep '^m' 文件   #过滤以m开头的行eg:[root@oldboyedu oldboy]# grep '^m' 1.txt 
my blog is http: blog.51cto.com 
my qq num is 5935281562、$ 过滤以什么结尾的行
grep 'm$' 文件  #过滤以m结尾的行eg:[root@oldboyedu oldboy]# grep 'm $' 1.txt 
my blog is http: blog.51cto.com 
our site is http:www.lizhenya.com3、过滤空行
grep '^$' 文件 eg:[root@oldboyedu oldboy]# grep '^$' 1.txt 4、点.表示任意单个字符
grep '.' 文件  #过滤单个字符eg:[root@oldboyedu oldboy]# grep '.' 1.txt 
[root@lzy oldboy]# cat oldboy.txt 
I am lizhenya teacher!
I teach linux.
test
I like badminton ball ,billiard ball and chinese chess!
my blog is http: blog.51cto.com 
our site is http:www.lizhenya.com 
my qq num is 593528156
aaaa,
not 572891888887.
^^^^^^^^66$$$$$$$^^^$$
lizhenyalizhenyalizhenya5、星*前一个字符出现0次及0次以上
grep '8*' 文件  #过滤8出现0次及0次以上eg:[root@oldboyedu oldboy]# grep '8*' 1.txt 
[root@lzy oldboy]# cat oldboy.txt 
I am lizhenya teacher!
I teach linux.
testI like badminton ball ,billiard ball and chinese chess!
my blog is http: blog.51cto.com 
our site is http:www.lizhenya.com 
my qq num is 593528156aaaa,
not 572891888887.
^^^^^^^^66$$$$$$$^^^$$
lizhenyalizhenyalizhenya6、 .* 表示文件中的所有内容
贪婪匹配 .* 所有符号 任何符号 连续出现的字符 有多少匹配多少
grep '.*' 文件  #过滤文件中所有内容eg:[root@oldboyedu oldboy]# grep '.*' 1.txt 
[root@lzy oldboy]# cat oldboy.txt 
I am lizhenya teacher!
I teach linux.
testI like badminton ball ,billiard ball and chinese chess!
my blog is http: blog.51cto.com 
our site is http:www.lizhenya.com 
my qq num is 593528156aaaa,
not 572891888887.
^^^^^^^^66$$$$$$$^^^$$
lizhenyalizhenyalizhenya7、[] 表示任意单个字符串,还原带含义的特殊符号 .^$ 之类,支持序列
grep '[abc]' 文件  #不是过滤abc字符串,而是过滤或a或b或c的行
grep '[a-z]' 文件  #过滤a-z区间的所有字母
grep '[0-9]' 文件  #过滤0-9区间的所有数字
grep '[a-Z0-9.^$-]' 文件  #过滤a-z区间的所有字母或0-9区间所有数字或.或^或$或-,切记^不能写在开头,不然就成过滤以什么开头的行了,-不能写在中间,不然表示区间,只能从a-Z,不能从A-zeg:[root@oldboyedu oldboy]# grep '[abc]' 1.txt 
[root@lzy oldboy]# cat oldboy.txt 
I am lizhenya teacher!
I teach linux.
I like badminton ball ,billiard ball and chinese chess!
my blog is http: blog.51cto.com 
our site is http:www.lizhenya.com 
aaaa,
lizhenyalizhenyalizhenya[root@oldboyedu oldboy]# grep '[a-z]' 1.txt 
[root@lzy oldboy]# cat oldboy.txt 
I am lizhenya teacher!
I teach linux.
test
I like badminton ball ,billiard ball and chinese chess!
my blog is http: blog.51cto.com 
our site is http:www.lizhenya.com 
my qq num is 593528156
aaaa,
not 572891888887.
lizhenyalizhenyalizhenya[root@oldboyedu oldboy]# grep '[0-9]' 1.txt 
my blog is http: blog.51cto.com 
my qq num is 593528156
not 572891888887.
^^^^^^^^66$$$$$$$^^^$$[root@oldboyedu oldboy]# grep '[a-Z0-9.^$-]' 1.txt 
[root@lzy oldboy]# cat oldboy.txt 
I am lizhenya teacher!
I teach linux.
test
I like badminton ball ,billiard ball and chinese chess!
my blog is http: blog.51cto.com 
our site is http:www.lizhenya.com 
my qq num is 593528156
aaaa,
not 572891888887.
^^^^^^^^66$$$$$$$^^^$$8、还原符号\   
\ 撬棍 转义字符 脱掉马甲打回原形
\n  回车换行
\t	tab键
grep '[\.]' 文件  #过滤文件中的.eg:[root@oldboyedu oldboy]# grep '[\.]' 1.txt 
[root@lzy oldboy]# cat oldboy.txt 
I teach linux.
my blog is http: blog.51cto.com 
our site is http:www.lizhenya.com 
not 572891888887.9、[^a] 表示对a进行取反
grep '[^a]' 文件  #对a取反eg:[root@oldboyedu oldboy]# grep '[^a]' 1.txt 
[root@lzy oldboy]# cat oldboy.txt 
I am lizhenya teacher!
I teach linux.
test
I like badminton ball ,billiard ball and chinese chess!
my blog is http: blog.51cto.com 
our site is http:www.lizhenya.com 
my qq num is 593528156
aaaa,
not 572891888887.
^^^^^^^^66$$$$$$$^^^$$
lizhenyalizhenyalizhenya

笔试题

1、统计每个字母出现的次数
[root@oldboyedu oldboy]# grep '.' 1.txt  -o | sort | uniq -c| sort -rn |head31  18 l18 a16 t15 i14 o14 e12 n11 h11 ^2、统计每个单词出现的次数
[root@oldboyedu oldboy]# egrep '[a-Z]+' /etc/passwd -o| sort|uniq -c|sort -rn |head39 x37 sbin31 nologin13 var9 bin8 systemd5 User5 daemon5 bash4 root3、匹配身份证号
[root@oldboyedu oldboy]# grep '[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9X]' 2.txt 
孔 150000123874591242
夏 222113859123487192
赵 37142518322922103X[root@oldboyedu ~]# egrep '[0-9]{17}[0-9X]' 1.txt 
孔 1500001238745912423r242
夏 222113859123487192
赵 37142518322922103X[root@oldboyedu ~]# egrep '[0-9]{17}[0-9X]$' 1.txt 
夏 222113859123487192
赵 37142518322922103X[root@oldboyedu ~]# egrep '[0-9]{17}[0-9A-Z]$' 1.txt 
夏 222113859123487192
赵 37142518322922103X###扩展 边界符 \b 或者 \<内容\>
[root@oldboyedu ~]# egrep '\b[0-9]{17}[0-9A-Z]\b' 1.txt 
夏 222113859123487192
赵 37142518322922103X[root@oldboyedu ~]# egrep '\<[0-9]{17}[0-9A-Z]\>' 1.txt 
夏 222113859123487192
赵 37142518322922103X

扩展正则

1、+ 表示前面的字符出现一次或一次以上
egrep '8+' 文件  #过滤8出现一次即一次以上的行eg:[root@oldboyedu oldboy]# egrep '8+' 1.txt 
my qq num is 593528156
not 572891888887.2、{} 出现至少n次最多m次
egrep '[0-9]{18}' 文件  # 过滤连续的18个数字
egrep '8{2,3}' 文件  #至少2次,最多3次 优先匹配后面的数字eg:[root@oldboyedu oldboy]# egrep '[0-9]{18}' 2.txt 
孔 150000123874591242
夏 222113859123487192eg:[root@oldboyedu oldboy]# egrep '8{2,3}' 1.txt 
not 572891888887.
[root@oldboyedu oldboy]# egrep '8{2,3}' 1.txt -o
888
883、| 或者
egrep '^$|^#' 文件  #匹配文件的空行和以井号开头的,经常用来过滤文件生效的行数,需要-v取反
egrep 'qq|test' 文件  #查找出包含qq的行或包含test的行eg:[root@oldboyedu oldboy]# egrep -v '^$|^#' /etc/selinux/config 
SELINUX=enforcing
SELINUXTYPE=targeted
SETLOCALDEFS=0eg:[root@oldboyedu oldboy]# egrep 'qq|test' 1.txt 
test
my qq num is 5935281564、()当做一个整体
egrep 'lizhe(u|n)ya' 文件 #过滤出包含lizhenya的行货lizheuya的行eg:[root@oldboyedu oldboy]# egrep 'lizhe(u|n)ya' 1.txt 
I am lizheuya teacher!
our site is http:www.lizhenya.com 
lizhenyalizhenyalizhenya

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

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

相关文章

Redis应用—4.在库存里的应用

大纲 1.库存模块设计 2.库存缓存分片和渐进式同步方案 3.基于缓存分片的下单库存扣减方案 4.商品库存设置流程与异步落库的实现 6.库存入库时"缓存分片写入 + 渐进式写入 + 写入失败进行MQ补偿"的实现 7.库存扣减时"基于库存分片依次扣减 + 合并扣减 + 扣不了返…

Learn learn Cython

[SCTF ez_cython]简单分析需要调用一个cy库,找到文件"cy.cp38-win_amd64.pyd"pyd文件生成:编写pyx文件 \#test.pyx def say_hello_world(name): print("Hello world" % name)编写setup \#setup.py from distutils.core import setup from Cython.Build imp…

24.10.31 补充日志分析以及打包压缩

uniq 作用:去重,一般与sort搭配使用,单用uniq,是合并相邻两行相同内容 参数: -c #统计重复行的次数 eg:[root@oldboyedu ~]# cat uniq.txt oldboy lidao lidao lidao lidao oldboy oldboy lidao oldboy pldboy [root@oldboyedu ~]# uniq uniq.txt oldboy lidao oldboy l…

k8s阶段08 k8s扩展(kubectl插件), 调度器(亲和调度, 污点和容忍度调度), 集群日常管理, 高可用集群部署, 集群版本升级

Kubernetes 扩展机制 扩展Kubernetes1.kubectl插件 2.API Server扩展身份认证、鉴权和动态准入控制相关插件 3.API扩展,以支持更多的资源类型 4.调度器扩展以支持更多调度算法 5.控制器扩展以支持更多的Controller或Operator 6.网络插件,扩展Kubelet以配置Pod网络 7.设备插件…

WebP图片使用踩坑

前情 WebP是一种同时提供了有损压缩与无损压缩(可逆压缩)的图片文件格式,最初在2010年发布,目标是减少文件大小,相较于传统的 PNG、JPG,甚至是动图 GIF 的格式,WebP 比它们的空间更小。根据谷歌的测试,WebP 格式的图片可以比 JPEG 格式的图片小 26%-34%,比 PNG 格式的…

idea把unicode转为中文

国际化需求,中文转unicode了 ‌设置文件编码‌:打开IDEA,通过快捷键Ctrl+Alt+S或通过菜单File -> Settings,搜索File encoding,选择Transparent native-to-ascii conversion选项,并设置默认编码为UTF-8。这样设置后,打开properties文件就可以显示中文了。

Qt+OPC开发笔记(一):OPCUA介绍、open62541介绍、编译与基础环境Demo

前言本篇介绍OPC协议,相关开源库、编译并搭建Qt开发OPC的基础环境。 Demo OPCOPC(OLE for Process Control)是一个工业标准,用于实现工业自动化系统中的不同设备和应用软件之间的数据交换和互操作性。以下是关于OPC的详细介绍:OPC的起源与发展OPC起源于上世纪90年代,随着…

vue 上传组件 vxe-upload 图片和附件拖拽调整顺序

vue 上传组件 vxe-upload 图片和附件拖拽调整顺序,通过设置 drag-sort 参数就可以启用拖拽排序功能 官网:https://vxeui.com/ 图片拖拽排序<template><div><vxe-upload v-model="imgList" mode="image" multiple drag-sort></vxe-u…

arm安装数据库

https://blog.csdn.net/wochunyang/article/details/132883654https://blog.csdn.net/qq_43690482/article/details/132168349https://www.cnblogs.com/wshisboy/p/16374015.htmlhttps://www.cnblogs.com/windandchimes/p/18344463 首先先看麒麟系统的版本CPU对应版本。 cat /p…

12月做题记录

whk恐怖如斯,仅补两周即可让呆猫失去大脑12月做题记录✩ trick ✯ 会大部分,要\(tj\)提示 ✬ 会小部分/完全没想到,看了\(tj\)才会 ◈ 脑电波 ✡ 有某一算法的神秘通用性质 ⊗ 待补目录12月做题记录CF1725K Kingdom of CriticismCF1446D2 Frequency Problem (Hard Version)根…

Vulnhub nxy

0x01:端口扫描 主机发现 nmap -sn 10.10.10.0/24全端口扫描 nmap --min-rate 10000 -p- 10.10.10.132UDP扫描 nmap -sU --top=20 10.10.10.132详细端口扫描 nmap -sT -sC -sV -O --min-rate 10000 -p22,80 10.10.10.132漏洞扫描 nmap --script=vuln -p22,80 10.10.10.1320x02:…

2024ciscn 逆向ezCsky和dump详解

ezCsky Exeinfo看了不是exeIDA分析不了,使用鸡爪Ghidra进行分析。这边顺带讲一下Ghidra的基础操作方法 下载Ghidra:https://gitcode.com/gh_mirrors/gh/ghidra_installer 下载java11(对版本有要求) 打开.bat文件第一次用需要先输入jar文件所在的地址,比如我的就是 C:\Pro…