正则表达式(针对文本内容)

正则表达式针对文本内容

  • grep:针对文本内容进行过滤,支持正则表达式,针对行来处理
  • sort:以行为单位对文本内容进行排序,也可根据数据类型来排序
  • uniq(去重复)
  • paste:合并文件
  • 去重
  • tr命令(标准输入的字符进行替换、压缩、删除)

grep:针对文本内容进行过滤,支持正则表达式,针对行来处理

元字符

.:匹配任意单个字符,可以是汉字

():分组

[]:任意范围的单个字符

使用正则表达式要用’ '引起来

表示次数

正则表达式匹配连续出现

*:任意次

.*:至少一次

?:0次或1次

+:最少一次

{n}:匹配前面的字符等于一次

位置锚定

^:行首锚定

$:行尾锚定

分组()

或者 |

-v:取反

-i:忽略字符大小

-n:匹配显示行号

-c:只显示行号

-o:仅显示匹配到的字符串

grep -A 3 dn /etc/passwd

取自己三行以及往下数三行

grep -B 3 dn /etc/passwd

自己三行以及往上数三行

-e:条件或

-w:匹配整个单词

-E:相当于egrep,使用扩展正则

-f:处理两个文件中的相同内容,第一个文件作为匹配条件

-r:所有包含文件内容(不处理软链接)

^:以……为开头

$:以……为结尾

sort:以行为单位对文本内容进行排序,也可根据数据类型来排序

-f:忽略大小写(默认情况下大写字母排在前面)

-b:忽略每行前面的空格

-n:按照数字进行排序(正向排序)

-r:按照数字进行排序(反向排序)

-u:去重

-o:将排序后的结果输出到指定文件夹

uniq(去重复)

cat 文件名 | uniq 选项

-c:统计连续重复行的次数,并合并重复行

-u:显示仅出现一次的行

-d:仅显示重复出现的行(连续出现)

tr:对来自标准输入的字符,进行替换、压缩、删除

-c:保留字符集1的字符,其他的字符用字符集2进行替换

-d:删除所有字符集1的字符

echo abc | tr -c "ab"  "a"

-s:把重复出现字符串压缩为一个,用前一个替换后一个

cut:快速裁剪

cut 选项 参数  cat file | cut 选项

-d:指定分隔符

-f:按字段进行截取,跟上数字,截取第九段

-b:以字节为单位进行截取

-c:以字符为单位进行截取

-complement:排除所指定的字段

-output-delimiter:更改输出内容的分隔符

面试题:

split(大小文件拆分)

-l:按行拆分(指定行数)

-b:按大小拆分(指定大小)

paste:合并文件

paste cat

左右合并 上下合并

grep -m 1 root /etc/passwd

多个匹配只取第一个

grep -v '^[[:space:]]*#|^$'  /etc/fstab

-i 忽略字符大小写 #可有可无
-n 显示匹配的行号
-c 统计匹配的行数

统计匹配到的行数

grep -c root /etc/passwd

-o 仅显示匹配到的字符串
-q 静默模式,不输出任何信息
-A # after, 后#行

grep -A 3 root /etc/passwd

匹配到的后三行也显示出来

-B # before, 前#行
-C # context, 前后各#行
-e 实现多个选项间的逻辑or关系,如:grep –e ‘cat ’ -e ‘dog’ file

grep -e root -e bash /etc/passwd

包含root或者包含bash的行

-w:匹配整个单词

grep -w root /etc/passwd

-E 使用ERE,相当于egrep,使用扩展正则
-F 不支持正则表达式
-f file 根据模式文件,处理两个文件相同内容 把第一个文件作为匹配条件
-r 递归目录,但不处理软链接
-R 递归目录,但处理软链接

grep -f 123.txt 456.txt  匹配两个文件内容相同部分

sort、uniq、tr命令

sort命令

以行为单位对文件内容进行排序,也可以根据不同数据类型排序

cat file | sort 选项

常用选项

-f:忽略大小写,默认大写字母排在前面

-b:忽略每行前面的空格

-n:按照数字进行排序

-r:反向排序

-u:等同uniq,表示相同的数据仅显示一行,去重

-t:指定字段分隔符,默认使用tab键

-k:指定排序字段

-o:将排序后结果转存至指定文件

sort -n test.txt

按数字大小进行排序

sort -n -r test.txt

倒序排列

sort -u test.txt

去重

快捷去重(uniq)

uniq [选项] 参数
cat 文件 | uniq 选项

-c 统计连续重复的行的次数,并且合并重复的行
-u 显示仅出现一次的行(包括不连续的重复行)
-d 仅显示重复出现的行(必须是连续的重复行)

tr命令(标准输入的字符进行替换、压缩、删除)

tr 选项  参数

-c:保留字符集1的字符,其他的字符用字符集2替换

-d:删除所有属于字符集1的字符

-s:将重复出现的字符串压缩为一个字符串,用字符串2换字符串1

变量扫描器---------eval

命令字前加上eval,shell会在执行命令之前扫描2次

#!/bin/bash
a=100
b=a
echo "普通echo输出的变量b的值为:"\$$b
eval echo "经过eval扫描输出变量b的值为:"\$$b

你可能感兴趣的:(正则表达式)