HJ3-2.3 Linux 三剑客与管道使用

  • 管道
  • 正则表达式
  • grep
  • sed
  • awk

1 管道

1.1 什么是管道?

Linux 提供管道符"|"将两个命令隔开,管道符左边命令的输出就会作为管道符右边命令的输入

echo "hello1234" | grep 'hello'

2 正则表达式

正则表达式就是记录文本规则的代码

例子

举例

  • 找出所有的 hi 单词 \bhi\b
  • hi 单词后面有 lucy 单词 \bhi\b.*\blucy\b
  • 以 0 开头,然后是两个数字,然后是一个连字号"-",最后是8个数字 0\d{2}-\d{8}

2.1 常用的元字符

代码 说明
. 匹配除换行符以外的任意字符
\w 匹配字母或数字或下划线或汉字
\s 匹配任意的空白符
\d 匹配数字
\b 匹配单词的开始或结束
^ 匹配字符串的开始
$ 匹配字符串的结束

2.2 常用的限定符

代码/语法 说明
* 重复零次或更多次
+ 重复一次或更多次
? 重复零次或一次
{n} 重复 n 次
{n,} 重复 n 次或更多次
{n,m} 重复 n 到 m 次

实战

  • 匹配以字母 a 开头的单词----- \ba\w*\b
  • 匹配刚好 6 个字符的单词-----\b\w{6}\b
  • 匹配 1 个或更多连续的数字-----\d+
  • 5 位到 12 位 QQ 号-----\d{5,12}

3 grep

3.1 定义

根据用户指定的模式(pattern)对目标文本进行过滤,显示被模式匹配到的行

3.2 命令形式

grep [OPTIONS] PATTERN [FILE...]

3.3 选项

  • -v 显示不被 pattern 匹配到的行
  • -i 忽略字符大小写
  • -n 显示匹配的行号
  • -c 统计匹配的行数
  • -o 仅显示匹配到的字符串
  • -E 使用 ERE,相当于 egrep
实战
  • 查找文件内容包含 root 的行数
    • grep -n root test.txt
  • 查找文内容不包含 root 的行
    • grep -nv root test.txt
  • 查找以 s 开头的行
    • grep ^s test.txt
  • 查找以 n 结尾的行
    • grep n$ test.txt

4 sed

4.1 定义

sed 是流编辑器,一次处理一行内容

sed

4.2 命令形式

sed [-hn..][-e

你可能感兴趣的:(HJ3-2.3 Linux 三剑客与管道使用)