grep、sed、awk文本处理三剑客,但是awk相对复杂这里暂时先不说明后续补充
grep
grep是一款强大的文本搜索工具,支持正则表达式。
全称( global search regular expression(RE) and print out the line)
语法:grep [option]… PATTERN [FILE]…
usage: grep [-abcDEFGHhIiJLlmnOoqRSsUVvwxZ] [-A num] [-B num] [-C[num]]
[-e pattern] [-f file] [--binary-files=value] [--color=when]
[--context[=num]] [--directories=action] [--label] [--line-buffered]
[--null] [pattern] [file ...]
常用参数
-v 取反
-i 忽略大小写
-c 符合条件的行数
-n 输出的同时打印行号
^* 以*开头
*$ 以*结尾
^$ 空行
- 查找my.txt中有”你好“ 这个词语的行列出来
grep 你好 my.txt
- 查找my.txt中有”你好“ 这个词语的行列出来明细和行号
grep -n 你好 my.txt
- 查找my.txt中不包含”你好“这个词语的行并列出来
grep -v 你好 my.txt
- 查找my.txt中包含”你好“一共的行数
grep -c 你好 my.txt
- 查找my.txt中有”abc“ 这个词语的行并列出来,不区分大小写
grep -i abc my.txt
- 查找my.txt中开头为J的行列出来
grep ‘^J’ my.txt
- 查找my.txt中结尾为”你好“的行列出来
grep “你好$” my.txt
sed
sed 的工作原理如下图
命令: sed
语法 : sed [选项]… {命令集} [输入文件]…
常用命令:
d 删除选择的行
s 查找
y 替换
i 当前行前面插入一行
a 当前行后面插入一行
p 打印行
q 退出
替换符:
数字 :替换第几处
g : 全局替换
\1: 子串匹配标记,前面搜索可以用元字符集\(..\)
&: 保留搜索刀的字符用来替换其他字符
- 替换my.txt 第一次”你好“为”你好吗“
sed ‘s/你好/你好吗/’ my.txt
- 替换my.txt 全局”你好“为”你好吗“
sed ‘s/你好/你好吗/g’ my.txt
- 替换my.txt从第二行到末尾”你好“为”你好吗“
sed ‘2,$s/你好/你好吗/’ my.txt
- 删除第二行
sed ‘2d’ my.txt
- 删除第二行到第四行
sed ‘2,4d’ my.txt
- 替换第二行为helloword
sed ‘2c\hello world’ my.txt
- 替换第二行到末尾为helloword
sed ‘2,$c\hello world’ my.txt
- 输出前三行
sed ‘3q’ my.txt
把my.txt文本中包含”你好“的行输入到my1.txt
sed -n ‘/你好/w my1.txt’ my.txt