cut
cut列截取		
-c[1-5-] #以字符为单位-是到最后
-d[:,.] #自定义分割符默认制表符
-f[1,2,3,4] #截取那一列
案例
cut -c1-5 /etc/passwd #以字母第一个至第四个截取 同cut -c-5 /etc/passwd
cut -c1,5 /etc/passwd #以字母第一个和第四个截取
cut -c10- /etc/passwd #以字母第十个至末尾
cut -d ':' -f1 /etc/passwd #以:分割截取f1第一列 同cut -d: -f1 /etc/passwd
cut -d: -f1,7 /etc/passwd #以:分割截取f1第一列和f7第7列
sort
sort排序,指定列排序,数字排序,去重等
-r   降序排列,默认是升序(重点)
-u   去除重复行(重点)
-n   以数字排序,默认按字符排序
-t   指定分隔符(重点)
-k   第N列(重点)
-b 忽略前导空格
-R 随机排序,每次运行的结果均不同
-o 将排序结果输出到文件中,类似重定向符号
案例
sort -n -t: -k3 /etc/passwd #-n以数字排序,-t:以冒号分割-k3然后按照第三列的数字大小升序排列
sort -n -rt: -k3 /etc/passwd #-n以数字排序,-t:以冒号分割-k3然后按照第三列的数字大小降序排列
sort -n -rt: -k3 /etc/passwd -o 文件 #-o 和 > 一样
sort -u demo.txt #去重,相同的列去重
sort -uR demo.txt #去重后随机排序
uniq
uniq去重
-c 重复次数,-d只显示重复的
-r 降序排序(默认升序)
-o 将排序结果输出到文件中,类似重定向
-n 以数字排序
-t[:.,] 分隔符
-k[1,2,3,4,5] 第N列
-R 随机排序,每次运行结果不同
案例
uniq 文件 #只能相邻的列去重,没什么卵用 sort 文件 | uniq 或者 sort -u 文件
sort qc.log |uniq -c #去重后重复的行计数会提示重复的多个次
sort ip |uniq -d #查看查看重复的项
sort ip |uniq -D #查看所有重复的项
sort demo | uniq -i #不区分大小写,去除重复的项
tr
tr搜索替换,删除文件,压缩连续字符
-d'a-z1-9' #删除指定的字符
-s'a-z1-9' #压缩连续重复的字符成指定的单个字符
-t #对指定的字符进行替换
-c #将指定字符外的字符替换为指定字符
案例
cat zzz.txt | tr -d a #删除字符a
cat zzz.txt | tr -d abc #删除字符a和b和c
tr -s abcd < 文件 #将任一连续的a、b、c、d字符压缩为一个字符
cat zzz.txt | tr -s a A #将多个或者连续的a压缩为A
cat zzz.txt | tr -s ab AB #将多个或者单个连续的a、连续的b分别压缩为A和B
cat zzz.txt | tr -s "\n" #删除空白行,空白处有制表符,空格不行
cat zzz.txt | tr -t abc ABC #把字符a、b、c替换为A、B、C
cat zzz.txt | tr -t a-z A-Z #把a-z转换为A-Z
cat zzz.txt | tr -c a X #将字符a外的字符全部替换为X
find
#使用当前目录中的名称查找文件
find  [options]  [查找路径]  [查找条件]  [处理动作]
find . -name 文件 #查找当前目录.是否有这个文件或目录
find . -name 文件 #查找当前目录.是否有这个文件或目录,忽略大小写
find . -not -name 文件 #查找排除这个文件或目录的,找出其他文件
find . -name "*文件" #查找当前目录.是否有这个文件*带前缀的所有文件
find . -type f -name 文件 #查找当前目录.是否有这个文件,-type f指定文件
find . -type d -name 文件 #查找当前目录.是否有这个文件,-type f指定目录
find . -mtime +30 文件 #以今天开始计算时间查找修改时间大于等于30天的文件
find / -type f -size +100M -exec rm -f {} \; #查找大文件进行删除
find / -type f -name "*log*" -mtime +10 -exec rm {} \; #查找删除10天前的日志
xargs
ps -ef |grep "zabbix" |grep -v grep |awk '{print $2}' | xargs kill -9 	#删除所有zabbix进程

grep

vim sampler.log
boot
book
booze
machine
boots
bungie
bark
aardvark
broken$tuff
robots
------------------------------------------------------------------------------------------------------------
cat sampler.log |grep boo #查看文件在过滤boo
grep boo sampler.log #grep 将遍历文件“sampler.log” 的每一行,并打印出其中的每一行包含单词“boo”区分大小写
grep -i ‘boo’ sampler.log #grep 将遍历文件“sampler.log” 的每一行,并打印出其中的每一行包含单词“boo”不区分大小写
grep -n boo sampler.log #过滤出显示行号
grep -v "boo" sampler.log #grep将打印不包含字符串“boo”的每一行 -v取反
grep -c "boo" sampler.log #输出只显示匹配行的总数量,匹配查询的行
grep -l ‘boss’ * #显示所有包含boss字符里有这个的文件名,目录会打印,相同文件名会打印
grep -x "boo" sampler.log #精准匹配,这行只有boo,有空格就匹配不到
grep -A3 "boo" sampler.log #允许你定位到的行数,向下增加3行,这样就得到了搜索字符串额外行
grep -B3 "boo" sampler.log #允许你定位到的行数,向上增加3行,这样就得到了搜索字符串额外行
grep -r #逐层遍历目录查找
grep -w #单词
#正则表达式
grep "e$" sampler.log #搜索文件以字母 e 结尾的行
grep -E "boots?" sampler.log #如果需要更广泛的正则表达式命令grep -E "boot|boots" sampler.log

sed

#基本语法
sed [options] commands [inputfile...]
选项有
sed -e #进行多项(多次)编辑
sed -n #取消默认输出
sed -r #使用扩展正则表达式
sed -i #原地编辑(修改源文件)
sed -f #指定sed脚本的文件名
sed -i.bak #备份
#常见处理动作
‘p’ #打印
‘i’ #在指定行之前插入内容 类似vim里的大写O
‘a’ #在指定行之后插入内容 类似vim里的小写o
‘c’ #替换指定行所有内容
‘d’ #删除指定行
对文件增删改查操作
打印
sed 选项 '定位+命令’ 需要处理的文件
sed -n 'p' sampler.log #打印每一行,并取消默认输出
sed -n '2p' sampler.log #打印指定的第二行
sed -n '1,4p' sampler.log #打印指定的第一行到第四行
sed -n '$p' sampler.log #打印最后一行
插入文件内容
#i 在上面插入
#a 在下面插入
sed '$awahahaasdasd' sampler.log $a文件最后一行下面增加内容
sed '$ixixixiix' sampler.log $i文件最后一行上面增加内容
sed 'a下面' sampler.log a文件每行下面增加内容
sed 'i上面' sampler.log i文件每行下面增加内容
sed '5a五行' sampler.log 5a文件第五行下面增加内容
sed '2i二行' sampler.log 2i文件第二行上面增加内容
sed '/boo/ihello' sampler.log 以boo开头所有行的上一行插入hello
修改文件内容
#c替换指定的整行内容
sed '5chello world' sampler.log 替换文件第5行内容
sed 'chello world' sampler.log 替换文件所有内容
sed '1,5chello world' sampler.log 替换文件1到5号内容为单一的hello world
sed '/^boo/c888888' sampler.log 替换以boo开头的行

删除文件内容

#d 删除
sed 'd' sampler.log #全部删除
sed '1d' sampler.log 删除文件第1行
sed '1,5d' sampler.log 删除文件1到5一起行
sed '$d' sampler.log 删除文件最后一行
sed '/^$/d' sampler.log 删除空行
sed '/ROOT/d' sampler.log 删除匹配到所有ROOT字符的行
对文件进行搜索替换操作
语法:sed 选项 ‘s/搜索的内容/替换的内容/动作’ 需要处理的文件
其中,s表示search搜索;斜杠/表示分隔符,可以自己定义;动作一般是打印p和全局替换g
sed 's/ROOT/HAHA/' sampler.log 替换所有的行ROOT后面还有ROOT不替换
sed 's/ROOT/HAHA/'g sampler.log 替换所有的行ROOT后面还有ROOT也替换g全局
sed 's#ROOT#HAHA#'g sampler.log 如果有/就用其他代替
sed '9s#ROOT#HAHA#' sampler.log #替换特定行号处的字符串
sed '8,14s#ROOT#HAHA#' sampler.log #替换行号范围内的字符串
sed 's#^ROOT.*ROOT#root root#' sampler.log #替换ROOT.*ROOT变成root root

awk

awk options[可选参数] pattern[模式] action[动作] file[文件]
awk处理文本内容模式
awk默认以空格为分隔符,且多个空格也识别为一个空格,作为分隔符;
awk按行处理文件,一行处理完毕之后,再处理下一行;
awk可以根据用户指定的分隔符去工作,没有指定,则默认为空格;
awk内置变量
内置变量 说明
$n 指定分隔符后,当前的第n个列所在的字段
$0 完整的一行记录
FS 字段分隔符,默认是空格
NF(Number of fields) 字段分隔后,当前一共多少个字段
NR(Number of records) 当前记录数,行数
vim alx.txt
alex1 alex2 alex3 alex4 alex5
alex6 alex7 alex8 alex9 alex10
alex11 alex12 alex13 alex14 alex15
alex16 alex17 alex18 alex19 alex20
alex21 alex22 alex23 alex24 alex25
alex26 alex27 alex28 alex29 alex30
案例
awk '{print $2}' alx.txt #输出第二列内容
awk '{print $2,$3}' alx.txt #输出多列内容
awk 'NR<=3{print $0}' alx.txt #打印前三行的文本内容
awk 'NR==3 {print $0}' alx.txt #查看第三行内容
awk 'NR==2,NR==5{print $0}' alx.txt #输出多行2行至5行
awk 'NR==3,NR==5{print NR,$0}' alx.txt #输出从第3到第五行,并显示行号
awk '{print $1,$(NF-1),$(NF-2)}' alx.txt #显示文件第一列,倒是第一列,和倒数第二列的内容
awk '{print "第一列: "$1,"第二列: "$2}' alx.txt #自定义输出内容
#awk默认的字段分隔符为空格,但是像下面这样的文本,以 # 为分隔符,就需要用到自定义分隔符
awk -F "#" '{print $1,$2}' alx.txt #默认是空格分割,-F选择分割符
#awk模式pattern BEGIN END