跟萌老师学Linux的第三天

2023-03-24 11:48:05 浏览数 (1)

grep:一种强大的文本搜索工具,它能使用正则表达式匹配模式搜索文本,并把匹配的行打印出来

  • -w:word 精确查找某个关键词 pattern
  • -c:统计匹配成功的行的数量
  • -v:反向选择,即输出没有没有匹配的行
  • -n:显示匹配成功的行所在的行号
  • -r:从目录中查找pattern
  • -e:指定多个匹配模式
  • -f:从指定文件中读取要匹配的 pattern
  • -i:忽略大小写

正则表达式

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

  • ^ 行首
代码语言:javascript复制
cat readme.txt  | grep '^T'
  • $ 行尾
代码语言:javascript复制
cat readme.txt  | grep ')$'
  • .换行符之外的任意单个字符
代码语言:javascript复制
cat readme.txt  | grep 'f.ee'
  • ?匹配之前项0次或者一次
代码语言:javascript复制
cat readme.txt  | grep 'f?ee'
  • 匹配1次或者多次
代码语言:javascript复制
cat readme.txt  | grep 're '
  • *匹配0次或者多次
  • {n} 匹配n次
  • {n,} 匹配至少n次
  • {m,n} 至少m,最多n
  • [] 匹配任意一个
代码语言:javascript复制
cat readme.txt  | grep [bB]
  • [^] 排除字符
  • | 或者

sed:流编辑器,一般用来对文本进行增删改查

  • -n :禁止显示所有输入内容,只显示经过sed处理的行(常用)
  • -e :直接在命令模式上进行 sed 的动作编辑,接要执行的一个或者多个命令
  • -f :执行含有 sed 动作的文件
  • -r :sed 的动作支持的扩展正则(默认基础正则)
  • -i :直接修改读取的文件内容,不输出。

常见 'script' address :

2 ∶第 2 行

2,4 ∶第 2 行到第 4 行

2,$ ∶第 2 行到最后一行,$ 表示最后

2~3 ∶从第 2 行开始,每隔 3 行取一行2、5、8

2, 4 ∶从第 2 行到 2 4 行

/pattern/ :匹配上 pattern 的行

[!] :表示否定,取反: '2 !' 表示除了第二行

常见 'script' command :增删改查

a∶append,在指定行的后增加一行,内容为 a 的后面接的字串

i∶insert,在指定行的前增加一行,内容为 i 的后面接的字串

d∶delete,删除某一行或者某几行,也可以指定删除匹配上的行

c∶change,改变指定行的内容

s∶更改或替换字符串,使用格式为 's/pattern/new/flags',把pattern替换成new,默认只替换一个,可以指定flags

y∶转换,实现字符一对一转换,格式‘y/abc/ABC/'

p∶print,把匹配或修改过的行打印出来,通常与–n参数合用

awk:也称 gawk,编程语言,可对文本和数据进行处理

-Ffields,设置字段分隔符

awk 在读取一行文本时,会用预定义的字段分隔符划分每个数据字段,并分配给一个变量。

  • $0 代表整个文本行;
  • $1 代表文本行中的第1个数据字段;
  • ……
  • $NF 代表文本行中的最后一个数据字段

awk 默认的字段分隔符是任意空白字符(如:空格 or 制表符),也可以用 -F 参数自定义分隔符

基础结构:' {script} '

匹配结构:' /pattern/{script} '

扩展结构:'BEGIN{script} {script} END{script}'

awk 内置变量:

FS :定义输入字段分隔符,Field Separator,同 –F

RS :定义输入记录分隔符,Record Separator

OFS :定义输出字段分隔符,Out Field Separator

ORS :定义输出记录分隔符,Out Record Separator

NF :数据文件中的字段总数,可以简单理解为列数

NR :已处理的输入记录数,可以简单理解为行数

awk 条件和循环语句:

if:条件判断

awk ' { if (判断条件) {yes} else {no} } '

for:循环语句

awk ' { for (循环条件) {循环语句} } '

awk 数学运算:

(加),- (减), * (乘),^ (幂)

/ (除),** (平方), % (取余)

int(x) x的整数部分,取靠近零一侧的值

log(x) x的自然对数

Linux常见符号及其含义

0 人点赞