linux du -sh 脚本,Linux之shell脚本(1)

Linux之shell脚本(1)

一、正则表达式:

正则表达式(或称Regular Expression,简称RE)就是由普通字符(例如字符a到z)以及特殊字符(称为元字符)组成的文字模式。

该模式描述在查找文字主体时待匹配的一个或多个字符串。

正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配。简单的说,正则表示式就是处理字符串的方法,它是以行为单位来进行字符串的处理行为,正则表示式通过一些特殊符号的辅助,可以让使用者轻易的达到搜寻/删除/取代某特定字符串的处理程序。vim、grep、find、awk、sed等命令都支持正则表达式。

1.常用正则表达式:

1).代表任意单个字符;

例如:检索test.txt文本中匹配s字符的。

cd71251fa31e954b66b03d03e60cedd9.png

2)^代表行的开始;

becc2c894e26f4debf7da950b36c12e9.png

3)$代表行的结束;

例如;检索test.txt文本中以.结束的。(\.表示把特殊字符.转为普通字符)

8e3ff6d30ee256f5a30405dad59a75b3.png

4)[...]表示匹配括号中的字符之一

例如:检索test.txt文本中匹配小写字母a到z之间的。

b64f2fc46554150bcc50b8d855eead5f.png

注意:

[abc]表示匹配单个字符a或b或c

[123]表示匹配单个字符1或2或3

[A-Z]表示匹配大写字母A-Z之间一个

[^a]表示取反,匹配除去小写字母a的。

5)*表示前导字符出现0次或任意多次;

例如:检索test.txt文本中出现0次或多次T的。

3c892c11b77e588f596e1fd21cc3bae5.png

6)\?表示前导字符出现0或1次;

例如:检索test.txt文本中出现0或1次e的。

87c2e6775a5f160e69b7a752eea9b180.png

7)\+表示前导字符出现1次或多次。

例如:检索test.txt文本中出现1或多次nn的。

7cfa00f4549e310cc46043b23636fd65.png

8)\{n,m\}表示前导字符出现n至m次;

n/m为整数,并且m>n;

其他形式:

\{n\}连续的n个前导字符;

\{n,\}连续的至少n个前导字符;

例如:检索test.txt文本中出现2至4个n的。

70e215ae63f9de30ae30600bfb37b276.png

9)\表示转义其后的单个特殊字符,使其成为普通字符;

例如:检索test.txt文本中含有.的。

7b464183d2d301fc1d72b907e50b4b29.png

10)|表示或;

例如:检索test.txt文本中含有a或b的。

1b8204996fe75dc8b088e5282df9b1bd.png

11)[]或():将部分内容合成一个单位组;

例如:检索test.txt文件中含有Tae或The的。

19c266ddf26c79684b01e6d45bbcd213.png

二、grep命令的用法

grep(global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来.

1)-A数字:列出符合行之外,并且列出后几行;

例如:列出test.txt文本中Tom行与后俩行。

f07b4596c993c228d45c869eef231199.png

2)-B数字:列出符合行之外,并且列出前几行;

例如:列出test.txt文本中Tom行与前俩行。

c9006a57b0eec9d991213c6f5f1079d9.png

3)-C数字(如不加数字,默认为2):列出符合行之外,并且列出前后几行;

例如:列出test.txt文本中Tom行与前后俩行。

8146263b4376b4de767f9386b45c963f.png

4)-c:--count(若再加上-v参数则显示不符合的总行数):不显示符合的行,只显示符合的总行数;

例如:列出test.txt文本中含有Tom的行数;

列出test.txt文本中不含有Tom的行数。

08d020f0a04a4ec08fe1c848385c3bec.png

5)-i:忽略大小写

例如:列出test.txt文本中含有tom(大小写)的行。

4287d970375e1dd96578fd9607b35677.png

6)-n:再匹配的行前面打印行号

例如:列出test.txt文本中含有tom(大小写)的行,并且打印出行号。

64932b305fd37a45011b95b8b8d946a2.png

7)-v:反检索,显示不匹配的行;

例如:列出test.txt文本中不含有tom的行。

2d679bfc1b63d23bdcc6acf8e09184e5.png

8)精确匹配:再抽取的字符串后加上\>

例如:精确列出test.txt文本中含有30的行。

1fc2ac543747848e4a588eec6ad2143b.png

8)-s:不显示不存在或不匹配文本的错误信息;(如文件不存在)

例如:bb.txt文件不存在,检索时候提示搜索不到的错误信息,

如果不要错误信息提示,则加上-s。

6866751d9a1c0d323cf2c03c4a611dea.png

三、sed命令的用法

sed是一种在线编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有改变,除非你使用重定向存储输出。

sed的基本命令:

1)s:替换

例如:把test.txt中The替换成aa,输出到bb.txt文件中。

sed替换命令:

/../../分隔符(可以用其他符合代替)

The搜索的字符串

aa替换的字符串

搜索的文件

bb.txt输出到的文件

9164dd5dec87f5d8299dc559cb43f46b.png

2)&:表示匹配的字符串

注意:

sed 默认只替换搜索字符串的第一次出现,利用/g可以替换搜索字符串所有

如果需要对同一文件或行作多次修改,可以使用 "-e" 选项

例如:给test.txt中The替换成加一个(),输出到cc.txt文件中。

0141e38bbc1edc97946ccd35896c7725.png

3)d:删除行

例如:将passwd内容显示并打印行号,同时删除2到5行。

注意:

nl命令在linux系统中用来计算文件中行号。nl 可以将输出的文件内容自动的加上行号。

a161d2c58ef902c311a39dd22e1a47a7.png

4)增加行:a(在指定的行后新增)i(在指定的行前新增)

例如:将test.txt内容显示并打印行号,同时在第二行后新增hello。

36973e51362a4a9666cc7ad8d69fde2b.png

例如:将test.txt内容显示并打印行号,同时在第二行前新增hello。

b25e0ecd0416ce563785d289c7ae1356.png

例如:如果要同时新增多行,则每行之间要用反斜杠\来进行的添加。

afc6772abb308f542315e987a3a0b892.png

5)c:取代行

例如:将test.txt内容显示并打印行号,同时取代2到5行间内容为BBBBBBB。

aca42a85d41102a372ee28c377ca62f9.png

6)p: 打印

例如:仅列出test.txt文本中的第5到7行内容。

73de07401e2a54f4d947964938d72d5d.png

7)-i:sed 的-i选项可以直接修改文件中的内容

例如:将test.tst文本中的第二行修改为kkkk

6e281eecd7cb4fdf612a9a84c6d0ed25.png

8)扩展

调用sed的方式:

在命令行键入命令

将sed命令插入脚本文件,然后调用sed

将sed命令插入脚本文件,并使sed脚本可执行。

使用sed命令行的格式:

sed [选项] sed命令 输入文件。

记住在命令行使用sed命令时,实际命令要加单引号。

sed也允许加双引号。

使用sed脚本文件格式:

sed [选项] -f sed脚本文件  输入文件

要使用第一行具有sed命令解释器的sed脚本文件的格式:

sed脚本文件[选项]输入文件

例如:使用sed脚本将jjjjj添加到test.txt文本中的第三行,将lllll添加到test.txt文本中的第四行。

a92131a7856e196400fa514fce78750c.png

给sed脚本权限,运行脚本

7e3f30a23d3f95b18247677ef649469c.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值