一:什么是管道?
linux提供管道符“|”将两个命令隔开,管道符左边命令的输出就会作为管道符右面命令的输入
什么是正则?
正则表达式就是记录文本规则的代码
举例:
1.找出所有hi单词 \bhi\b
2.hi单词后面有lucy的单词 \bhi\b.*\blucy\b
3.以0开头,然后是两个数字,然后是一个连字号“-”,最后是8个数字0\d{2}-\d{8}
常用的元字符
代码 | 说明 |
---|---|
. | 匹配除换行符以外的任意字符 |
\w | 匹配字母或数字或下划线或汉字 |
\s | 匹配人意的空白符 |
\d | 匹配数字 |
\b | 匹配单词的开始或结束 |
^ | 匹配字符串的开始 |
$ | 匹配字符串的结束 |
常用的限定符
代码/语法 | 说明 |
---|---|
* | 重复0次或更多次 |
+ | 重复一次或更多次 |
? | 重复0次或1次 |
{n} | 重复N次 |
{n,} | 重复n次或更多次 |
{n,m} | 重复n到m次 |
二:grep
定义:根据用户指定的模式(pattern)对目标文本进行过滤,显示被模式匹配到的行
grep[options]PATTERN[file..]
-v | 显示不被pattern匹配到的行 |
---|---|
-i | 忽略字符大小写 |
-n | 显示匹配的行号 |
-c | 统计匹配的行数 |
-o | 仅显示匹配到的字符串 |
-E | 使用ERE相当于egrep |
三:sed
sed是流编辑器,一次处理一行内容
命令形式:sed[-hn..][-e<script>][-f<script file>][file]
-h显示帮助
-n 仅显示script处理后的结果
-i 修改源文件
-e<script>以选项中指定的script来处理输入的文本文件
-f<script 文件>以选项中指定的script文件来处理输入的文本文件
常用动作:
a | 新增 sed -e '4 a newline' |
---|---|
c | 取代 sed -e '2,5c No2-5 number' |
d | 删除 sed -e'2,5d' |
i | 插入 sed -e '2i newline' |
p | 打印 sed -n '/root/p' |
s | 取代 sed -e 's/old/new/g' g是全局替换 |
查看帮助文档:man sed j下一行 k上一行 /-e:查看有-e的行,n查看下一个-e行
四:awk
定义:把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行后续处理
命令形式:awk 'pattern + action'[file]
常用参数
FILENAME | awk 浏览的文件名 |
---|---|
BEGIN | 处理文本之前要执行的操作 |
END | 处理文本之后要做的操作 |
FS | 设置输入域分隔符,等价于命令行-F选项 |
NF | 浏览记录的域的个数(列数) |
NR | 已读的记录数(行数) |
OFS | 输出域分隔符 |
ORS | 输出记录分隔符 |
RS | 控制记录分隔符 |
$0 | 整条记录 |
$1 | 表示当前行的第一个域... |
实战:
1.使用begin加入标题
awk 'BEGIN{print"begin","begin"}{print 2}' /etc/passwd
2.自定义分隔符
echo "123456789" | awk 'BEGIN{RS="*"}{print $0}'
网友评论