shell脚本相关命令

正则表达式

由一类特殊字符及文本字符所编写的模式,其中有些字符(元字符)不表示字符字面意义,而表示控制或通配的功能,类似于增强版的通配符功能,但与通配符不同

通配符功能是用来处理文件名,而正则表达式是处理文本内容中字符。

元字符

.   	#匹配任意单个字符,可以是一个汉字  
[]   	#匹配指定范围内的任意单个字符,
[^] 	#匹配指定范围外的任意单个字符,示例:[^zhou] 

[:alnum:] 字母和数字
[:alpha:] 代表任何英文大小写字符,亦即 A-Z, a-z
[:lower:] 小写字母,示例:[[:lower:]],相当于[a-z]
[:upper:] 大写字母
[:blank:] 空白字符(空格和制表符)
[:space:] 包括空格、制表符(水平和垂直)、换行符、回车符等各种类型的空白,比[:blank:]包含的范围
广

在这里插入图片描述
在这里插入图片描述

表示次数的字符

* 		#匹配前面的字符任意次,包括0次,贪婪模式:尽可能长的匹配
[root@localhost ~] echo goooooogle |grep 'go*gle' 

.* 		#任意长度的任意字符,不包括0次
[root@localhost ~] echo gdadadadgle |grep "g.*gle" 

\? 		#匹配其前面的字符出现0次或1次,即:可有可无
[root@localhost ~] echo ggle |grep "go\?gle" 

\+ 		#匹配其前面的字符出现最少1次,即:肯定有且 >=1 次
[root@[root@localhost ~] echo google |grep "go\+gle"   

\{n\} 	#匹配前面的字符n次
[root@localhost ~] echo google |grep 'go\{2\}gle'

\{m,n\} #匹配前面的字符至少m次,至多n次
[root@localhost ~] echo gooooogle |grep 'go\{2,5\}gle'

\{,n\}  #匹配前面的字符至多n次,<=n

\{n,\}  #匹配前面的字符至少n次
[root@localhost ~] echo gooooogle |grep 'go\{2,\}gle' 

在这里插入图片描述

位置锚定

^ 			   #行首锚定, 用于模式的最左侧
$ 			   #行尾锚定,用于模式的最右侧
^PATTERN$ 	   #用于模式匹配整行 (单独一行  只有root)
^$ 			   #空行
^[[:space:]]*$ #  空白行


\<\b        #词首锚定,用于单词模式的左侧(连续的数字,字母,下划线都算单词内部)
\>\b        #词尾锚定,用于单词模式的右侧
\<PATTERN\>    #匹配整个单词

在这里插入图片描述
在这里插入图片描述

grep命令

grep [选项]… 查找条件 目标文件
	  -i:查找时忽略大小写
	  -v:反向查找,输出与查找条件不相符的行
	  -o 只显示匹配项
	  -f 对比两个文件的相同行
	  -c 统计匹配的行数
	  -n 显示匹配的行号
	  -w 匹配整个单词
	  -r 递归目录,但不处理软链接

[root@localhost ~] grep -i 'root' /etc/passwd  #忽略大小写过过滤文件内容
输出:root和ROOT包括的行
[root@localhost ~] grep -v '^#' /etc/passwd  #过滤出文件中不以#开头的行
输出:不以 # 开头的行
[root@localhost ~] grep -o root /etc/passwd     #过滤出root
输出:root
[root@localhost ~] grep -w 'root' /etc/passwd # 过滤出包含这个的单词
输出:含有root的单词 如rootwaste
[root@localhost ~] grep -v 'root' /etc/  #快速过滤出含root的内容 

-A # after, 后#行 
-B # before, 前#行
-C # context, 前后各#行
grep -A3 root /etc/passwd   #匹配到的行后3行显示出来
grep -B3 root /etc/passwd   #匹配到的行前3行显示出来
grep -C3 root /etc/passwd   #匹配到的行前后各3行显示出来

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

tr命令

tr [选项]  
	-d    删除
	-s    压缩
	-c   用字符串1中字符集的补集替换此字符集

[root@localhost ~] tr 123 abc  #只要出现123 就转换成abc
1g2j3k
agbjck
[root@localhost ~] tr 12345678 abc #最后一个会一直用
123456789
abcccccc9
[root@localhost ~] tr -d abc  #删除abc
2a34bc
234
[root@localhost ~] tr -s " "  #将多个空行压缩为一个
1     2      3     4
1 2 3 4
[root@localhost ~] tr -s "a" #将多个相同字符压缩为一个
aaaa
a

cut命令

cut命令可以提取文本数据中指定的列。
cut命令可以根据指定的字符位置或指定的字段分隔符来截取文本,并将结果输出到标准输出或指定的文件。

cut [选项] 文件
	 -d 指定字段的分隔符,默认为制表符。
	 -f 指定要提取的字段列表,字段列表之间使用逗号分隔
	 -c 指定要提取的字符位置列表,字符位置列表之间使用逗号分隔
 	--complement 提取指定字段或字符位置之外的内容

[root@localhost ~] cut -f1 aa.txt   #提取文件第一列
[root@localhost ~] cut -f2,4,5 -d',' aaa.txt   #提取文件第2 4 5列,用逗号作分隔符
[root@localhost ~] cut -c1-9 aaa.txt   #提取文件前9个字符
[root@localhost ~] cut -f3 --complement file.txt   # 提取文件的前2列以外的所有列

sort命令

sort命令用于对文本文件进行排序,默认以字母排序。
sort [选项] file
	   -b 忽略行首空白字符
	   -r 以倒序方式进行排序
	   -f 忽略大小写进行排序
	   -n 按照数值大小进行排序
	   -u 去除重复行
	   -t 指定字段分隔符
	   -k 指定按照字段排序

在这里插入图片描述

uniq命令

uniq 命令用于找出或删除文本文件中连续出现的重复行。
uniq [选项] [输入文件 [输出文件]]
	  -c  在输出结果中显示每行重复出现的次数。
	  -d  只显示重复行。
	  -u  只显示不重复的行。

在这里插入图片描述
在这里插入图片描述

Shell脚本中,换行通常是由换行符(LF,即“\n”)来实现的。当你编写Shell脚本时,通常在命令的末尾按下回车键就会自动插入一个换行符。不过,有时可能需要在一行中输入多条命令,或者在需要的时候手动控制换行。以下是几种控制Shell脚本中换行的方法: 1. 使用分号(`;`)来在同一行中分隔多条命令。例如: ```shell echo "Hello"; echo "World" ``` 上面的例子会在同一行中先后执行两条echo命令。 2. 在行尾使用反斜杠(`\`)来表示命令会在下一行继续。例如: ```shell echo "This is a very long string that \ needs to be wrapped to the next line" ``` 这样,第二行的字符串会接着第一行继续。 3. 使用圆括号`()`或花括号`{}`来将多个命令组合在一起,分别在圆括号或花括号内自由换行。例如: ```shell ( echo "First line of a block" echo "Second line of a block" ) ``` 或者 ```shell { echo "First line of a block" echo "Second line of a block" } ``` 这两种方式都可以在同一逻辑块内进行换行。 4. 在脚本中使用`EOF`标记来定义一个多行的字符串,这种方式常用于`cat`命令或其他需要输入多行文本的命令。例如: ```shell cat <<EOF This is a multiline string. It can span several lines. EOF ``` 上面的例子会将从`EOF`开始到`EOF`结束的所有内容视为一个字符串,并在遇到结束标记时结束。 使用这些方法可以方便地在Shell脚本中控制命令和文本的换行,让脚本更加清晰易读。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值