linux正则表达式 概念,shell正则表达式

正则定义

规定一些特殊语法表示字符类,数量限定符,位置关系,然后用这些特殊语法和普通字符一起表示亿额模式,这就是正则表达式

正则三要素字符类

数量限定符

位置限定符

正则中使用单引号保证内部字符不被shell解释掉

字符类.  匹配任意一个字符

[] 匹配括号中的任意一个字符

-  在[]中表示字符范围

^ 位于[]内的开头,表示匹配除了括号中字符外的任意一个字符

[[:xxx:]] grep工具预定义的一些命名字符类 eg alpha字  digit 数字

数量限定符?前边字符0-1次

+前边字符1-多次

*前边字符0-多次

{n}前边单元N次.匹配满足就返回,也可能后边重复多余N次

{n,}至少n次

{m,n}m到n次,也可能多余n次..可以增加$结尾限制

位置限定符^匹配行首位置

$行尾位置

\

\>匹配单词结尾位置

\b匹配单词开始或者结尾位置

\B匹配非单词开头和结尾的位置

其他特殊字符\ 转义

()将整个正则表达式组成一个单元,使用数量限定符

| 连接两个子表达式,表示或的关系

注:以上为grep正则表达式的extended规范,base也有,但是字符?+{}\()解释为普通字符,要表示上述含义需要加\转义.-E同理

sed

基本概念:sed是一种流式编辑器(stream idter)

基本格式sed option -f scriptfile file1 file2

sed option 'script' file1 file2

sed的编辑命令可以直接当命令行参数传入,也可以写成一个脚本文 件然后用-f参数指定,编辑命令的格式为/pattern/action

sed是一种在线编辑器,每次处理一行内容.每次处理将当前行放入缓存"模式空间",模式空间处理完成后移动到屏幕

格式1. /pattern/p :打印匹配pattern的行    P(print)  sed -n  '111' log  相当于grep,默认会打印一遍原文以及匹配项

2. /pattern/d :删除匹配pattern的行    D(delete)

3. /pattern/s/pattern1/pattern2/:查找符合pattern的行,将该行第一个匹配pattern1的字符串替换为pattern2

4./pattern/s/pattern1/pattern2/g:查找符合pattern的行,将该行所有匹配pattern1的字符串替换为pattern2

eg:  sed   '/^t/s/Z/--&--/g'   log

将log文件中所有的t字符开始的(正则狮)行中的Z替换为--Z--,,,&符号表示匹配pattern1的字符串

sed '/^[0-9]/s/\([0-9]*\)/~\1~' log将0-9开始的,0-9*替换为~0-9~   .因为sed默认使用basic正则,所以()需要转义,   -r使用extended

pattern2中的\1表示与pattern1的第一个括号匹配的内容.\2表示与pattern1中第二个括号匹配的内容

5.sed -i 做的修改会先修该原文

6.定址:用于据定对哪些行进行编辑.地址形式可以是数字,正则或者二者结合.如果没有定制,那么sed处理所有的行

eg

sed -n  '3p' file  打印第三行

sed -n '100,300p' fiile 打印[100,300]行

sed '/start/, /end/d' file 删除start 和end行之间的行

7.命令和选项

sed命令告诉sed如何处理由地址指定的各输入行,如果没有指定则处理所有的输入行

命令:

a\在当前行后添加一行或者多行,多行,每行需要用"\"续行

c\用次符号厚的新闻本替换当前行的文本 .....\

i\在当前行中插入文本,......

h吧模式空间李的内容赋值到暂存缓冲区

H吧模式空间的内容追加到暂存...

g复制,覆盖缘由内容

G追加

I列出非打印字符

p打印行

q结束或退出sed

r从文件读取输入行

!对所选行意外的所有行应用名林

s替换

g行内进行全局替换

w将所选行写入文件

x交换暂存缓冲区与模式空间的内容

y将字符替换为另一个字符

选项

-e进行多项编辑

-n取消默认的输出

-f指定sed脚本的文件名

正则表达式

^行首定位

$行尾定位

. 除换行以外的单个字符

*匹配0-多个前导字符

[]任意一个

[^ ]取反

\(..\) 定义元祖标签,之后可以使用\1  \2 ... \9引用

&保存查找串以便替换中引用.

\< \>词头词尾

x\{m\} 连续m个x

...

...

awk

sed以行为单位处理文件,awk更强,还能以列伪单位处理文件.

行分割缺省换行

列分割缺省连续空格和tab.

分割符也可以自己定义

命令基本形式awk option 'script'  file1 file2

swk option -f scriptfile file1 file2

/pattern/{actions}

如果每日有pattern部分,那么所有行都执行actions部分.

自动变量$1 $2 ... 分别表示第1列................... $0 表示整个当前行

awk有类似的print语句,还有两个特殊变量condition-BEGIN和END

BEGIN后边的句子在整个文件之前执行一次,END之后的句子在整个文件之后执行一次

搜索 -F

awk -F: '/root/' /etc/passwd

调用方式

1命令行方式awk[-F field-separator] 'commands' input-file(s)

commands是awk命令,[-F 域分割符]是可选的. input-file是待处理文件

2shell脚本方式#!/bin/awk -f

BEGIN{

count1=0;

count2=0;

}

{

if($1<100)

count1++;

}

else{

count2++;

}

END{

printf("%d",count2);

}

3将所有的awk命令插入一个单独文件,然后调用:awk -f awk-script-file input-file(s)

awk调用正则表达式

A.awk语句:awk '/REG/{action}'

B.awk正则运算语句(~,~! 等同! ~)

C.awk内置使用正则表达式函数gsub(Ere,Reql,[In])

sub(Ere,Reql,[In])

match(string,Ere)

split(sting,A,[Ere])

awk内置变量&&杂项ARGC

ENVIRON

FILENAME

FNR 浏览文件的记录数

FS 等价-F

NF浏览记录的域的个数

NR已读的记录数

OFS输出域分隔符

ORS输出记录分隔符

RS控制记录分隔符

$0 整条记录

$1...$.. 第n个域

print

printf 和c语言printf类似

awk进阶

1循环(类C)

2条件(类C)

3数组  下标键值

CUT

在文件中负责剪贴数据,以每一行为一个处理对象

剪贴依据(三个定位方式)字节(bytes) -b

cut -b 1-3  file      #按照字节剪贴1-3个字符

字符(characters) -c域(fields) -f

-d指定域分割符,-f指定检出哪几个域

cut -d: -f 1-2,5 /etc/passwd

sort按照字符ascii排序

-u去除重复行

-r将默认升序修改为降序

-o将结果重定向写入文件,可以指定到源文件

-n以数字方式排序而非码拍.

-t 设定分隔符, -k指定分割之后的列.实现第k列排序

-f忽略大小写比较

-c检查是否已排序,如果乱序,输出第一个乱序的行的相关信息.返回1

-C检查,如果未排序,返回1

-M以 月份方式排序

-b忽略空白

uniq

去除重复-c显示输出中,在每行行首加上本行出现次数,取代-u,-d

-d只显示重复行

-u只显示不重复

tcpdump

strace

archlinux

gento

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ava实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),可运行高分资源 Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现
C语言是一种广泛使用的编程语言,它具有高效、灵活、可移植性强等特点,被广泛应用于操作系统、嵌入式系统、数据库、编译器等领域的开发。C语言的基本语法包括变量、数据类型、运算符、控制结构(如if语句、循环语句等)、函数、指针等。下面详细介绍C语言的基本概念和语法。 1. 变量和数据类型 在C语言中,变量用于存储数据,数据类型用于定义变量的类型和范围。C语言支持多种数据类型,包括基本数据类型(如int、float、char等)和复合数据类型(如结构体、联合等)。 2. 运算符 C语言中常用的运算符包括算术运算符(如+、、、/等)、关系运算符(如==、!=、、=、<、<=等)、逻辑运算符(如&&、||、!等)。此外,还有位运算符(如&、|、^等)和指针运算符(如、等)。 3. 控制结构 C语言中常用的控制结构包括if语句、循环语句(如for、while等)和switch语句。通过这些控制结构,可以实现程序的分支、循环和多路选择等功能。 4. 函数 函数是C语言中用于封装代码的单元,可以实现代码的复用和模块化。C语言中定义函数使用关键字“void”或返回值类型(如int、float等),并通过“{”和“}”括起来的代码块来实现函数的功能。 5. 指针 指针是C语言中用于存储变量地址的变量。通过指针,可以实现对内存的间接访问和修改。C语言中定义指针使用星号()符号,指向数组、字符串和结构体等数据结构时,还需要注意数组名和字符串常量的特殊性质。 6. 数组和字符串 数组是C语言中用于存储同类型数据的结构,可以通过索引访问和修改数组中的元素。字符串是C语言中用于存储文本数据的特殊类型,通常以字符串常量的形式出现,用双引号("...")括起来,末尾自动添加'\0'字符。 7. 结构体和联合 结构体和联合是C语言中用于存储不同类型数据的复合数据类型。结构体由多个成员组成,每个成员可以是不同的数据类型;联合由多个变量组成,它们共用同一块内存空间。通过结构体和联合,可以实现数据的封装和抽象。 8. 文件操作 C语言中通过文件操作函数(如fopen、fclose、fread、fwrite等)实现对文件的读写操作。文件操作函数通常返回文件指针,用于表示打开的文件。通过文件指针,可以进行文件的定位、读写等操作。 总之,C语言是一种功能强大、灵活高效的编程语言,广泛应用于各种领域。掌握C语言的基本语法和数据结构,可以为编程学习和实践打下坚实的基础。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值