1.Linux体系结构
体系结构主要分为用户态(用户上层活动)和内核态
内核:本质是一段管理计算机硬件设备的程序
系统调用:内核的访问接口
公用函数库:系统调用的组合
Shell:命令解释器,可编程
2.如何查找特定的文件?
find path [options] params
find -name 'aaa.java':在当前目录下递归查找aaa.java文件
find / -name 'aaa.java':在根目录下递归查找aaa.java文件
find ~ -name 'scala*':在~目录下递归查找以scala开头的文件
find ~ -iname 'scala*':在~目录下递归查找以scala开头的文件(忽略大小写)
3.检索文件内容
查找文件里符合条件的字符串
grep [options] pattern file
grep 'moo' target*:检索当前目录下文件名以target开头的文件中'moo'这个字符串
4.管道操作符 |
可将指令连接起来,前一个指令的输出作为后一个指令的输入
要点:
只处理前一个命令的正确输出,不处理错误输出
右边命令必须能够接收标准输入流,否则传递过程中数据会被抛弃
grep 'p\[true\]' xxx.log:筛选出符合p[true]的行
grep -o 'engine\[[0-9a-z]*\]':输出符合正则的字符串
grep -v 'grep':过滤掉含有'grep'的行
5.如何对文件内容做统计
awk [options] 'cmd' file
一次读取一行文本,按输入分隔符进行切片,切成多个组成部分
将切片直接保存在内建的变量中,$1,$2 ...($0表示行的全部)
支持对单个切片的判断,支持循环判断,默认分隔符为空格
awk '{print $1, $4}' netstat.txt:从netstat.txt中逐行输出第一个切片和第四个切片的内容
awk '$1 == "tcp" && $2 == 0 {print $0}' netstat.txt:在netstat.txt中,输出第一片为tcp且第二片为0的一整行
awk '($1 == "tcp" && $2 == 0) || NR == 1 {print $0}' netstat.txt:在上一个的基础上,输出表头(NR == 1)
awk -F '\t' '{print $4}' netstat.txt:根据'\t'进行分片,输出第四列
awk -F ' ' '{eg[$1]++}END{for (i in eg) print i "\t" eg[i]}' hello.txt:将hello.txt按照空格分隔,把第一列的值存进数组中计数,最后循环输出
6.批量替换文本内容
sed [option] 'sed command' filename
全名stream editor,流编辑器
适合用于对文本的行内容进行处理
sed 's/^hadoop/Hadoop/' hello.txt:将hello.txt的以hadoop开头的字符串替换成Hadoop,原文件不变(每行只替换第一次匹配的字符串)
sed -i 's/^hadoop/Hadoop/' hello.txt:将hello.txt的以hadoop开头行的hadoop字符串替换成Hadoop,原文件更改(每行只替换第一次匹配的字符串)
sed -i 's/\.$/\;/' hello.txt:将hello.txt的以.结尾的行的'.'替换成';',原文件更改(每行只替换第一次匹配的字符串)
sed -i 's/Hadoop/hadoop/g' hello.txt:将Hadoop替换成hadoop,'g'代表进行全文替换
sed -i '/^ */d' hello.txt:删除以多个空格开头的行(删除空行)
sed -i '/aaa/d' hello.txt:删除带有aaa的行