标题
linux三剑客与管道
一、管道
Linux提供管道符“|”将两个命令隔开,管道符左边命令的输出就会作为管道符右边的命令的输入:
二、正则
正则表达式就是记录文本规则的代码
代码 | 说明 |
---|---|
. | 匹配除换行符以外的任意字符 |
\w | 匹配字母或数字或下划线或汉字 |
\s | 匹配任意的空白字符 |
\d | 匹配数字 |
\b | 匹配单词的开始或结束 |
^ | 匹配字符串的开始 |
1$ | 匹配字符串的结束 |
常见的限定符:
正则演练>>
- 找出所有的hi单词
-\bhi\b
- hi单词后面有lucy单词
-\bhi\b.*\blucy\b
- 以0开头,然后是两个数字,然后是一个连字号“-”,最后是8个数字
-0\d{2}-\d{8}
1.grep
根据用户指定的模式(pattern)对目标文本进行过滤,显示被模式匹配到的行
命令形式:grep[OPTIONS]PATTERN[FILE…]
-v显示不被pattern匹配到的行
-i忽略字符大小写
-n显示匹配的行号
-c统计匹配的行数
-o仅显示匹配到的字符串
-E使用ERE,相同于egrep 6.
1.查找文件内容包含root的行数
grep -n root test.txt
2.查找文件内容不包含root的行
grep -nv root test.txt
3.查找以s开头的行
grep ^s test.txt
4.查找以n结尾的行
grep n$ text.txt
2.sed
sed是流编辑器,一次处理一行内容
命令形式:sed[-hn…][-e
-h显示帮助
-n仅显示script处理后的结果
-e
常见动作
练习
查看帮助
man sed
sed -h
在第四行后添加新字符串
sed -e ‘4 a newline testfile’ test.txt
在第二行前加上newline
sed ‘2i drink tea’ test.txt
全局替换
sed -e 's/root/hello/g’test.txt
直接修改文件内容
sed -i ‘s/root/hello/g’ test.txt
使用Mac操作的时候报错
sed: 1: “4 a newline”: command a expects \ followed by text
解决方案:调整mac下sed的用法,使其与Linux一致
mac上安装gnu-sed
brew install gnu-sed
alias sed=gsed
3.awk
把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行后续处理
常用参数: