一、管道
1、什么是管道
- linux提供管道符“|”将两个命令隔开,管道符左边命令的输出就会作为管道符右边命令的输入
2、 例子
- echo "hello123"|grep "hello"
二、正则
1、什么是正则
2、正则的用法
代码 |
说明 |
. |
匹配除换行符以外的任意字符 |
\w |
匹配字母或数字或下划线或汉字 |
\s |
匹配任意的空白符 |
\d |
匹配数字 |
\b |
匹配单词的开始或结束 |
^ |
匹配字符串的开始 |
$ |
匹配字符串的结束 |
代码/语法 |
说明 |
* |
重复零次或更多次 |
+ |
重复一次或更多次 |
? |
重复零次或一次 |
{n} |
重复n次 |
{n,} |
重复n次或更多次 |
{n,m} |
重复n到m次 |
三、grep
1、grep定义
- 根据用户指定的模式(pattern)对目标文本进行过滤,显示被模式匹配到的行
2、命令形式
- grep[OPTIONS]PATTERN[FILE...]
3、选项
符号 |
说明 |
-v |
显示不被pattern匹配到的行 |
-i |
忽略字符大小写 |
-n |
显示匹配的行号 |
-c |
统计匹配的行数 |
-o |
仅显示匹配到的字符串 |
-E |
使用ERE,相当于egerp |
四、sed
1、定义
2、命令
- sed[-hn..][-e<script>][-f<script文件>][文本文件]
- -h 显示帮助
- -n 仅显示script处理后的结果
- -e<script> 以选项中指定的sceipt来处理输入的文本文件
- -f<script文件>以选项中指定的script文件来处理输入的文本文件
3、常用动作
符号/说明 |
例子 |
a:新增 |
sed -e '4 a newline' |
c:取代 |
sed -e '2,5c NO 2-5 number' |
d:删除 |
sed -e '2,5d' |
i:插入 |
sed -e '2i hello' |
p:打印 |
sed -n '/root/p' |
s:取代 |
sed -e 's/old/new/g |
4、实战
sed '2a newline' test.txt
sed '2i newline' test.txt
sed -e 's/root/hello/g' test.txt
sed -i 's/root/hello/g' test.txt
五、awk
1、定义
- 把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行后续处理
2、命令形式
- awk 'pattern + action'[FILE]
3、命令解析
- awk 'pattern + action'[FILE]
- -pattern 正则表达式
- -action 对匹配到到内容执行的命令(默认为输入每行内容)
4、常用参数
符号 |
说明 |
FILENAME |
awk浏览的文件名 |
BEGIN |
处理文本之前要执行的操作 |
END |
处理文本之后要执行的操作 |
FS |
设置输入域分隔符(列数) |
NR |
已读的记录数(行数) |
OFS |
输出域分隔符 |
ORS |
输出记录分隔符 |
RS |
控制记录分隔符 |
$0 |
整条记录 |
$1 |
表示当前行的第一个或...以此类推x |
5、实战
- 搜索/etc/passwd有root关键字的所有行,并显示对应的shell
awk -F:'/root{print $7}'/etc/passwd
awk -F:'NR==2{print $0}'/etc/passwd
awk 'BEGIN{print "BEGIN","BEGIN"}{print$1,$2 }'/etc/passwd
echo "111 222|333 444|555 666"|awk 'BEGIN{RS="|"}{print $0}'