当前位置:首页 » 操作系统 » linux正则文件

linux正则文件

发布时间: 2023-01-25 05:38:21

linux基本操作10-----正则表达式与文件格式化处理


正则表达式
1
简单的说正则表达式就是处理字符串的方法,它是以行为单位来进行字符串的处理行为,正则表达式通过一些特殊符号的辅助,可以让用户轻易的达到查找,删除,替换某特定字符串的处理程序
2
grep在数据中查找一个字符串时,是以整行为单位来进行数据的选取的,也就是说假如一个文件内有10行,那么其中两行是有用的,那么就将这两行显示出来,其它的丢弃
3
在bash当中,我们知道通配符*可以用来表示任意个字符,但是正则表达式中的*表示不同的含义
在正则表达式中,'.'表示的是一定有一个任意字符的意思
在正则表达式中,'*'表示的是重复前一个字符0到无穷多次的意思
4
基础的正则表达式
RE字符
意义
^word
查找行首为word的行
word$
查找结尾为word的行
.
代表一定有一个任意的字符
*
重复前一个字符0个到无穷多个
[list]
从字符集合里面选择一个字符
[n1-n2]
从要选择的范围里面选择一个字符
[^list]
从不是这个字符集合里面找出一个字符
/{n,m/}
连续n到m个的前一个字符,/{n/}则是连续n个前一个字符,/{n,/}则是联系n到无穷多个前一个字符

sed
工具
1
sed本省是一个管道命令,可以分析标转输入,而且sed还可以将数据进行替换,删除,新增,选取特定行等功能
2
sed的用法
sed
[-nefr]
[动作]
-n
使用安静模式,在一般模式中,所有来自stdin的数据一般都会被列出到屏幕上,但是如果加上-n这个参数的话,则只有经过sed特殊处理的那一行才会被列出
-e
直接在命令模式上进行sed的动作编辑
-f
直接将sed的动作写在一个文件内,-f
filename则可以执行filename内的sed动作
-r
sed的动作支持的是扩展正则表达式的语法
-i
直接修改文件的内容,而不是由屏幕输出
3
动作说明
n1,n2
function
n1,n2不见得会存在,一般代表的是进行的动作的行数
function有下面这些参数
a:
新增,a的后面可以接字符串,而这些字符串会在新的一行出现,目前的下一行
c:
替换,c的后面可以接字符串,这些字符串可以替换n1,n2之间的行
d:
删除,因为是删除,所以d后面通常不接任何参数
i:
插入,i的后面可以接字符串,而这些字符串会在新的一行,目前的上一行
p:
打印,也就是将某个选择的数据打印出来
s:
替换,可以直接进行替换的工作

文件的格式化以及相关处理
1
格式化打印
printf
'打印内容‘
实际内容
关于C程序语言内,常见的变量格式
%ns
那个n是数字,s代表的是string
%nd
那个n是数字,d代表的是整数
%N.nf
那个n与N都是数字,f代表浮点数
2
文件比较工具diff
diff就是用在比较两个文件之间的区别,并且是行为单位来比较的,一般是用在ASCLL纯文本文件的比较上
diff的用法
diff
[-bBi]
from_file
to_file
-b
忽略一行当中仅有多个空白的区别
-B
忽略空白行的区别
-i
忽略大小写的不同
3
如果我们要将旧的文件升级成为新的文件时,我们可以先利用diff比较出文件的区别,并将区别文件制作成为补丁文件,再由补丁文件更新旧文件即可。
一般来说我们使用diff制作出来的比较文件通常扩展名为.patch
更新:patch
-pN
<
patch_file
还原:patch
-R
-pN
<
patch_file

❷ Linux正则表达式与通配符

正则表达式:在计算机科学中,是指一个用来描述或者匹配一系列符合某个句法规则的字符串的单个字符串。在很多文本编辑器或其他工具里,正则表达式通常被用来检索或替换那些符合某个模式的文本内容。正则表达式这个概念最初是由Unix中的工具软件(例如sed和grep)普及开的。
只有掌握了正则表达式,才能全面地掌握 Linux 下的常用文本工具(例如:grep、egrep、GUN sed、 Awk 等) 的用法

grep、sed、awk天然支持正则
grep -v代表反选,反向选择匹配到的内容
grep -E代表使用扩展正则
grep -P代表使用Perl正则
sed -r 代表使用扩展正则

正则表达式分为三类(man grep可以看到,分别是basic RegExs,extended RegExs,perl RegExs)
1、基本的正则表达式(Basic Regular Expression 又叫 Basic RegEx 简称 BREs)
2、扩展的正则表达式(Extended Regular Expression 又叫 Extended RegEx 简称 EREs)
3、Perl 的正则表达式(Perl Regular Expression 又叫 Perl RegEx 简称 PREs)

b. 处理过程:查找文本文件中是否包含要查找的 “关键字”(关键字可以是正则表达式) ,默认返回匹配的该行的内容
c. grep|egrep处理文件时,按行处理 |
| sed | sed | sed -r | - | a. 处理对象:文本文件
b.处理操作:对文本文件的内容进行 查找、替换、删除、增加等操作
c. sed 在处理文本文件的时候,按行处理 |
| awk | - | awk | - | a. awk 处理的对象:文本文件
b. awk 处理操作:主要是对列进行操作 |

注意:egrep 或 sed -r 默认使用扩展正则表达式(EREs),一般特殊字符({})可以不转义

grep -E 以及egrep(Extend Regular Expression)

Linux通配符和三剑客的正则表达式是不一样的,因此,代表的意义也有较大的区别
通配符一般用户命令行bash环境,而linux正则表达式用于grep, sed, awk场景。

通配符说明

示例:* 的使用:代表任意0-N个字符,代表所有字符

❸ 4-19 Linux中的正则表达式 --- 字符匹配

1、正则表达式和通配符有点像。区别在于通配符匹配的是文件名和目录名中的字符串,不能匹配文本中内容的字符串。而正则表达式匹配的是文本中的字符串。

2、正则表达式(REGEXP):由一类特殊字符及文本符号所编写的表达式,这种表达式的功能是匹配文本当中字符串。

3、正则表达式的特点:可以通过特殊字符及文本符号灵活组合各种过滤条件去匹配文本内容,从而达到自由度颇高的筛查方式。

4、正则表达式分两类:基本正则表达式(BRE)、扩展正则表达式(ERE),grep 加上 -E 参数就是使用 egrep。

5、元字符分类:元字符是指正则表达式中使用的特殊字符,这些特殊符号具有特定的功能。从功能上分类有:字符匹配、匹配次数、位置锚定、分组。

①、 .:匹配任意单个字符。

②、 [ ]:匹配指定范围内的任意单个字符。

③、 [^]:排除匹配指定范围内的任意单个字符。

④、 [:alnum:]:过滤字母和数字,包含了大写字母、小写字母 和 10个数字(0-9)。

⑤、 [:alpha:]:任何英文大小写字符,即 A-Z,a-z。

⑥、 [:lower:]:只过滤小写字母。

⑦、 [:upper:]:只过滤大写字母。

⑧、 [:blank:]:空白字符(空格和制表符)。

⑨、 [:space:]:水平和垂直的空白字符(比 [:blank:] 包含的范围广)。

⑩-①、 [:digit:]:十进制数字。

⑩-③、 [:graph:]:可打印的非空白字符。

⑩-④、 [:print:]:可打印字符。相当于 [:alnum:]、[:punct:] 和 space。

⑩-⑤、 [:punct:]:标点符号。

❹ Linux如何使用正则表达式命令文本文件操作命令

Linux对文本操作命令及正则表达式:

cat

cat 是 concatenate 的缩写,所以它的作用其实是连接文件。但默认情况下它会将连接文件的结果送到标准输出。所以我们常用来显示文件内容。类似于 dos 中的 type。

more

当一个文件的内容超过一屏后,我们可以用 more 这个指令来逐屏 察看 文件内容。

less

less 在 more 的基础上,更可以逐行 察看 ,前后翻页。

head

head 显示文件开头部分内容,默认显示前十行参数 --lines 或者 –n 指明显示行数基本格式:

tail

tail 显示文件结尾部分内容,命令用法同 head,参数 -f 显示文件的纪实更新,用于监视日志文件

tail 默认显示文件列表中每个文件的后 10 行,如果没有文件名或文件名为“-”则其从标准输入中读取文件,如果有多个文件则其会在文件前面加上“==>文件名<==”以便区别。

# tail /etc/mail/sendmail.mc 默认查看文件的后 10 行内容

# tail –n 20 /etc/passwd 查看文件后 20 行内容

注意: # tail –f /var/log/message 实时监控日志文件更新信息,非常重要

diff

diff 用于比较两个文件之间的区别,并送到标准输出。输出时先报告两个文件的哪一行不同。基本格式:

参数:

uniq 用于去除文本中相邻的重复行。

-u 参数可以只显示那些没有被重复过的行。 -d 显示有被重复过的行。

cut

cut 可以根据一个指定的标记(默认是 tab)来为文本划分列,然后将此列显示。使用权限:所有使用者

基本格式: cut -cnum1 -num2 filename

说明:显示每行从开头算起 num1 到 num2 的文字。

[root@uplooking root] $ cut –f1 –d: /etc/shadow 表示以 : 为分隔符,显示 /etc/shadow 的第一列 sort

sort 用来按各种需要重新排列文本,一般运用在一个管道之后。例如:

默认情况下 sort 按照字母顺序排列文本。

wc

wc 用来统计一个文件的行数、词数、字数并送到标准输出。也可以用-l(行数)、-w(词数)、-c(字数)来指定输出内容。

❺ Linux文件权限及正则表达式的应用

1、显示/etc目录下,以非字母开头,后面跟了一个字母以及其它任意长度任意字符的文件或目录

2、复制/etc目录下所有以p开头,以非数字结尾的文件或目录到/tmp/mytest1目录中。

3、将/etc/issue文件中的内容转换为大写后保存至/tmp/issue.out文件中

4、用户和组

5、创建用户user1、user2、user3。在/data/下创建目录test

❻ Linux正则表达式

一.linux文本查找命令

在说linux正规表达式之前,还介绍下linux中查找文本文件常用的三个命令:

1.grep : 最早的文本匹配程序,使用POSIX定义的基本正则表达式(BRE)来匹配文本。

2.egrep : 扩展式grep,其使用扩展式正规表达式(ERE)来匹配文本。

3.fgrep : 快速grep,这个版本匹配固定字符串而非正则表达式。并且是唯一可以并行匹配多个字符串的版本。

如下简单的介绍grep命令:

语法格式:

grep [options ...] pattern-spec [files ...]

用途:

匹配一个或多个模式的文本行。

options:

-E : 使用扩展正则表达式进行匹配, grep -E 或取代 egrep 命令。

-F : 使用固定字符串进行匹配, grep -F 或取代传统的fgrep命令。

-e : 通常第一个非选项的参数认为是要匹配的模式,也可以同时提供多个模式,只要将其放入单引号,并用换行字符分隔他们。

模式以减号开头时,为防止混淆其为选项,-e选项说明其后的参数为模式,即使他以减号开头。

-f : 从pat-file文件读取模式作为匹配。

-i : 模式匹配时忽略大小写差异。

-l : 列出匹配模式的文件名称,而不是打印匹配的行。

-q : 静默的,如果匹配成功,不将匹配的行输出到标准输出;否则即是不成功。

-s : 不显示错误信息,通常与-q并用。

-v : 显示不匹配模式的行。

说明:可以同时查找多个文件中的内容,当指定多个文件时,每个显示出的文件行前会有文件名加一个冒号标识其来自哪个文件。

可以使用多个-e 或 -f 选项,建立要查找的模式列表。

二.正则表达式简要介绍

1.正则表达式的组成

(1).一般字符:没有特殊意义的字符

(2).特殊字符(meta字符):元字符,有在正则表达式中有特殊意义

2.如下讲下正则表达式中的常见meta字符

(1).POSIX BRE与ERE中都有的meta字符:

\   :  通常用于打开或关闭后续字符的特殊含义,如\(...\)与\{...\}

.   :   匹配任何单个字符(除NUL)

*  :   匹配其前的任何数目或没有的单个字符,例: . 表示任一字符, 则 .* 匹配任一字符的任意长度

^  :   匹配紧接着的正则表达式,BRE中仅在正则表达式的开头有特殊的含义,ERE中在任何位置都有特殊含义

$  :   匹配前面的正则表达式,在字符串或者行结尾处。BRE中仅在正则表达式的结尾处有特殊的含义,ERE中在任何位置都有特殊含义

[]  :   匹配方括号内的任一字符,其中可用连字符(-)指的连续字符的范围;^符号苦出现在方括号的第一个位置,则表示匹配不在列表中的任一字符,

(2).POSIX BRE中才有的字符:

\{n,m\} : 区间表达式,匹配在它前面的单个字符重现的次数区别。\{n\}指重现n次;\{n,m\}指重现n至m次;

\( \) : 保留空间,可以将最多9个独立的子模式存储在单个模式中。如\(ab\).*\1 : 指匹配ab组合的两次重现,中间可存在任意数目的字符。

\n : 重复在\(与\)方括号内第n个子模式至此点的模式。

(3).POSIX ERE中才有的字符:

{n,m} : 与BRE的\{n,m\}功能相同

+ : 匹配前面正则表达式的一个或多个扩展

? : 匹配前面正则表达式的零个或一个扩展

| : 匹配|符号前或后的正则表达式

( ) : 匹配方括号括起来的正则表达式群

(4). 方括号([])表达式

4.1.字符集  [:  :]

标识字符集,有如下几种:

[::alnum] : 数字字符[:digit:] : 数字字符[:punct:] : 标点符号字符

[:alpha:] : 字母字符[:graph:] : 非空格字符[:space:] : 空格字符

[:blank:] : 空格与定位字符[:lower:] : 小写字母字符[:upper:] : 大写字母字符

[:cntrl:] : 控制字符[:print:] : 可显示的字符[:xdigit:] : 16进制数字

 4.2.排序符号

指将多个字符视为一个符号,如[.ch.]即将ch视为一个符号

4.3.等价字符

认为多个字符相等,如[=e=]在法文的locale里,可匹配于多种与e相似的字符,此处不再列出。

说明:这三种构造除其自身的方括号之外,还必须使用额外的方括号括起来。

例 : [[:alpha:]!] : 匹配任一英文字母或感叹号。

[[.ch.] : 匹配ch排序元素,而不匹配单独的字母c或h.

 3.简单正规表达式匹配案例

china  : 匹配此行中任意位置有china字符的行

^china : 匹配此以china开关的行

china$ : 匹配以china结尾的行

^china$ : 匹配仅有china五个字符的行

[Cc]hina : 匹配含有China或china的行

Ch.na : 匹配包含Ch两字母并且其后紧跟一个任意字符之后又有na两个字符的行

Ch.*na : 匹配一行中含Ch字符,并且其后跟0个或者多个字符,再继续跟na两字符

二.实例

如下通过常用实例来学习BRE和ERE匹配,源文件url.txt内容如下:

www..com

http://www..com

https://www..com

http://wwwcom

.com



1.url匹配

匹配以http或者https开头,并且其后为:并且含有.的串

BRE匹配:

grep '^https\{0,1\}.*\..*' url.txt

ERE匹配:

grep -E '^https?.*\..*' url.txt

匹配结果如下:

http://www..com

https://www..com

2.Email匹配

示例文件内容为:

[email protected]

aaaa@

[email protected]

[email protected]

@@.com

匹配以字母数字或者下划线开头的多个字符,其后有一个@之后有多个字母数字或者下划线,其中有一个.号

grep '^[[:alpha:][:digit:]_]*@[[:alpha:][:digit:]]*\..*' email.txt

 匹配结果:

[email protected]

[email protected]

[email protected]

转自 嘉为教育-rhce认证_rhce培训_linux培训_linux认证_linux考证

❼ Linux||正则表达式及grep命令

以下内容首发自公众号“小汪Waud”。

本期介绍在Linux环境下的正则表达式及grep命令。

正则表达式(Regular Expression)是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符及这些字符的特定组合,组成一个“规则字符串”,这个字符串用来表达对字符串的一种过滤逻辑。

正则表达式基本上是一种表示法,只要程序支持这种表示法,该程序就可以用来作为正则表达式的字符串处理之用。如vi、grep、awk、sed等程序支持正则表达式,所以可以使用正则表达式的特殊字符来进行字符串的处理。但例如cp、ls等命令并不支持正则表达式,所以只能用自己的通配符。

正则表达式依照 不同的严谨度 分为:基础正则表达式和扩展正则表达式。

注意!

grep是一种强大的文本搜索工具,可以使用 正则表达式匹配模式 查找文件里符合条件的字符串,并打印出来。

有点类似于WORD里的查找功能。

grep支持三种正则表达式语法:Basic、Extended和perl兼容。 如果没有提供正则表达式类型,grep将搜索模式解释为基本的正则表达式。要将模式解释为扩展正则表达式,请使用-E。

查看grep的帮助文档,如下

基本用法

grep [OPTION]... PATTERN [FILE]...

高级用法

grep [-A] [-B] [--color=auto] "查找字符" [模式] [文件]

常用参数

首先通过cat命令查看samples.txt的内容,如下图

如果想检索以K为行首的行,通过以下命令即可得到

如果想检索以Z为行尾的行,通过以下命令即可得到

如果想检索三个字符其中前面为K,后面为D中间字符,为任意字符,通过以下命令即可得到

参考资料

https://www.runoob.com/linux/linux-comm-grep.html

https://www.bilibili.com/video/BV1Yy4y117SX?p=12

❽ Linux正则表达式教程:Grep Regex示例

正则表达式是特殊字符,可帮助搜索数据,匹配复杂模式。正则表达式缩写为“regexp”或“regex”。

为了便于理解,让我们逐一学习不同类型的正则表达式。

[TOC]

一些常用的正则表达式命令是tr,sed,vi和grep。下面列出了一些基本的正则表达式。

我们来看一个例子吧。

执行cat示例以查看现有文件的内容

搜索包含字母'a'的内容。

' ^ '匹配字符串的开头。让我们搜索一下STARTS的内容

仅过滤以字符开头的行。将忽略开头不包含字符“a”的行。

让我们看看另一个例子 -

仅选择那些以 $ 结尾的行

这些表达式告诉我们字符串中字符的出现次数。他们是

例:

过滤掉包含字符'p'的所有行

我们想要检查字符'p'是否在字符串中依次出现2次。为此,语法将是:

注意:您需要使用这些正则表达式添加-E。

这些正则表达式包含多个表达式的组合。他们之中有一些是:

例:

搜索所有字符't'

假设我们要过滤字符'a'在字符't'之前的行

我们可以使用命令

大括号扩展的语法是花括号“{}”内的序列或逗号分隔的项目列表。序列中的起始和结束项由两个句点“..”分隔。

一些例子:

在上面的示例中,echo命令使用大括号扩展创建字符串。

❾ Linux命令详解之正则表达式


特殊字符
^
行首
$
行尾
.
任意一个字符
[]
内含字符范围,加^表示反向字符范围,在该范围内任何一个字符都可以匹配
(若要恢复普通用法,可在其前加转义字符/)
[:alnum:]
字母与数字字符
[:alpha:]
字母
[:ascii:]
ascii字符
[:blank:]
空格或制表符
[:cntrl:]
ascii控制字符
[:digit:]
数字
[:graph:]
非控制、非空格字符
[:lower:]
小写字母
[:print:]
可打印字符
[:punct:]
标点符号字符
[:space:]
空白字符,包括垂直制表符
[:upper:]
大写字母
[:xdigit:]
十六进制数字
其他字符
?
至多匹配一次
*
必须匹配0次或多次
+
必须匹配1次或多次
{n}
必须匹配n次
{n,}
必须匹配n次或n次以上
{n,m}
必须匹配在n到m次之间,包括n和m
示例
查找当前目录下所有以一位数字命名且以.txt结尾的文件,并进行显示
find
.-name
[[:digit:]]/.txt
-ok
ls
-l
{}
/;
查找所有以.txt结尾的文件并显示
find
.
-name[[:alnum:]]*/.txt
-ok
ls
-l
{}
/;

热点内容
python字符串分隔 发布:2025-07-08 04:53:20 浏览:664
楼道口门禁卡密码一般是多少 发布:2025-07-08 04:52:32 浏览:479
安卓手机根目录怎么删除 发布:2025-07-08 04:46:51 浏览:732
p30怎么刷回安卓 发布:2025-07-08 04:45:27 浏览:478
林业大数据库 发布:2025-07-08 04:40:37 浏览:646
php54forlinux 发布:2025-07-08 04:36:20 浏览:988
云服务器哪个性价比高 发布:2025-07-08 04:35:00 浏览:657
存储盘柜 发布:2025-07-08 04:30:51 浏览:887
电脑我的世界服务器地址怎么输 发布:2025-07-08 04:28:33 浏览:649
js裁剪上传 发布:2025-07-08 04:27:51 浏览:510