Linux 常用操作
【cat】
cat log.txt|head -n 100 只显示前面100行内容
cat log.txt|tail -n 100 只显示最后100行内容
cat log.txt|tail -n +100 显示100行之后的内容
【find】 --文件查找
1、-name 按照文件名查找
find /dirpath -name 'exp'
-i 忽略大小写 find . -name -i '*exp*'
可以用绝对路径/path 也可以用相对路径 .
2、-type 按照类型查找
f: 普通文件
d: 目录文件
l: 符号链接文件
s: 套接字文件
b: 块设备文件
c: 字符设备文件
p: 管道文件
3、根据关系从属查找
-user 用户名 查找属主指定用户的文件
-group 组名 查找数组为指定组的文件
-uidUserID 查找属主id为指定的文件
4、-size 根据文件大小查找
单位k,M,G,C
-size +6k --(6k,∞]
-size -6k --[0,5k]
-size 6k --(5k,6k]
5、根据时间查找
-atime 以访问时间
-mtime 以数据修改时间
-ctime 以元数据修改时间
【grep】 --用于内容查找,文本过滤
cat log.txt | grep 'Error' -A 5 多显示error之后的5行
cat log.txt | grep 'Error' -B 5 多显示error之前的5行
cat log.txt | grep 'Error' -C 5 多显示error前后的5行
-e 多条件查询
grep -rn 'stream' . --include='*.cpp'
在当前路径下查找包含指定内容'stream'的文件
-r 递归查找
-n 显示行号
--include= glob语法,限制文件类型是cpp
-i 忽略大小写
-e 实现多个选项之间的逻辑关系
-w 匹配整个单词
【vi】
--查找
vi 中找下一个相同的词
/word n 向前找
N 向后找
【$】
会把$后面的命令执行结果当做下一条命令的参数
cd $(ls |grep $(date \'+%Y%m%d\'))
【seq】
seq 1 5 连续输出1-5的数字
seq 1 2 10 连续输出1-10之间以2为步长的数字
seq -f '%03g' 1 5 按照指定格式输出 联合mkdir生成一系列文件夹或者文件..
【awk】--取列
awk 可以将一些文本整理成我们需要的样子.
基本语法
awk [options] 'program' file1,file2,...
其中program又可以分为pattern,action
eg1:
echo ddd>test;awk '{print}' test 直接打印文本内容
以列输出
eg2:
df | awk '{print $5}' df显示本机磁盘的详细信息,awk打印出来第5列信息
默认文本以空格符进行分割,如果需要以指定字符分割需要加参数-F
df | awk -F',' '{print $5,$6}' 以,分割文本列
可以一次输出多列,多列以,隔开
df | awk '{print $5,$6}' df显示本机磁盘的详细信息,awk打印出来第5列信息
eg3:
可以添加自己的字段
df | awk '{print $5,"self"}'
df | awk '{print $5,"self"$6}' 无缝拼接
df | awk '{print $5,"self:"$6}' 以:拼接
pattern
BEGIN -- 模式指定了处理文本之前需要执行的操作
END -- 处理文本之后需要处理的操作
eg4
awk 'BEGIN{print "aaa","bbb"} {print $1,$2} END{print "ccc","ddd"}' srcFile
在执行print $1,$2之前先打印 aaa,bbb,源文件可以为空
【awk分隔符】
awk默认分隔符是空格,awk的分隔符分两种,[#输入分隔符]和[#输出分隔符]
空格是默认的输入分隔符。
--#输入分隔符
eg5
awk -F# '{print $1,$2}' test
以上使用#作为分隔符,将test每一行都通过#来进行分割。
同时,awk支持设置内部变量的方式来指定分割符,在使用变量的时候需要用到-v选项
eg6
awk -v FS='#' '{print $1,$2}' test
作用同eg5
【输出分隔符】
我们在使用awk输出每一列的对话,会默认使用空格来进行分隔,当我们在处理完文本进行输出的时候,以什么文本或者符号进行分隔符。
我们可以使用awk的内置变量OFS来设置awk的输出分隔符,同样使用变量的时候需要配合使用-v选项
eg7
awk -v OFS="++" '{print $1,$2}' test
我们可以同时指定输入和输出分割符
eg8
awk -v FS = "++" -v OFS="--" '{print $1,$2}' test
如果想要输出项不进行分割,那么可以使用如下格式
eg9
awk '{print $1 $2}' test
print 之后不使用,分割项。
【awk 变量】
awk的变量分为[内置变量]和[自定义变量],输入分隔符FS和暑促分隔符OFS都属于内置变量。
awk常用内置变量
FS 输入分隔符,默认为空白字符
OFS 输出分隔符 默认空白字符
RS 输入记录分隔符
ORS 输出记录分隔符
NF 当前行的分割字段的个数,字段数量
NR 行号,当前 处理的文本行行号
FNR 各文件分别计数的行号
FILENAME 当前文件名
ARGC 命令行参数个数
ARGV 数组,保存的是命令行所给定的各参数
【wget】
wget https://download.oracle.com/otn_software/nt/instantclient/19500/instantclient-basic-windows.x64-19.5.0.0.0dbru.zip --no-check-certificate --user=tingtings324@163.com --password=Qjysqjy@324
添加账号密码 不检测证书
【sed】--取行,替换
sed 是一种流编辑器,它一次处理一行内容,处理时会把当前处理的行存储在临时缓冲区,称为"模式空间",接着用sed命令处理缓冲区中的内容,处理完成会把缓冲区的内容发送到屏幕,然后读入下一行,如果没有使用-‘D’的特殊命令,那么他会在两个循环之间清空模式空间,但不会清空保留空间,这样一直重复直到文件末尾。
编辑
1、d 删除模式空间的匹配行,并立即启用下一行
2、p 打印当前模式空间内容,追加大默认输出之后
3、a [\]text1 在指定行后面追加文本,支持使用\n实现多行追加
4、i[\]text 在行前面插入文本
5、a[\] text 替换行为单行或多行文本
6、w /path/somefile 保存模式匹配的行到指定的文件
7、r /path/somefile 读取指定文件的文本至模式空间中匹配到的行后
8、= 为模式空间中的行打印行号
9、 !模式空间中匹配行取反
10、s///: 查找替换
g 行内替换
p 显示替换成功的行
w /path/to/somefile 将替换成功的行保存到文件中
将文件中root 全部替换成abc
#sed -i 's/root/abc/g' file