shell提总结下— 不用总忘还是常总结啊"/>
刷刷shell提总结下— 不用总忘还是常总结啊
目录
- 1.统计文件行数
- 2.打印最后5行
- 3.输出7的倍数
1.统计文件行数
wc -l
-l ,–lines 显示行数
-w,–words 显示字数
-c,–chars 显示子符数
-L,–max-line-length 显示最长行的长度
2.打印最后5行
tail -n 5
-n <行数> 指定显示行数
-c <数目> 指定显示的字节数
-f 实时输出环境变化
-F 相当于 -f–retry
–retry 不停尝试打开文件,知道打开为止 与-f合用
–pid=<进程号> 与-f连用,在进程结束后自动结束tail命令
-s 刷新间隔
-q 不显示文件头
-v 总显示文件头
3.输出7的倍数
#!/bin/bash
seq 0 500 |awk '{if($1%7==0){print $1}}'
seq 输出连续数字
指定步长的 seq 0 2 500
-s 指定分隔符,默认回车
-w 指定位数
-f 指定格式
[root@C7–01 ~]# seq -f ‘文件 %04g.txt’ 9 11
文件 0009.txt
文件 0010.txt
文件 0011.txtseq -f ‘aa.%04g.txt’ 1 5 |xargs touch
awk: awk是一种处理文本文件的编程语言,文件的每行数据被称为记录,默认以空格或制表符为分隔符,每条记录会被分成若干字段(列), awk每次从文件中读取一条记录。
awk 选项 ‘模式或条件 {操作}’ 文件1 文件2
awk -f 脚本文件 文件1 文件2
FS:列分隔符。指定每行文本的字段分隔符,默认为空格或制表位,与“ -F ”作用相同
OFS:输出分隔符。指定输出字段间的分隔符。
RS:行分隔符。awk从文件读取资料时,将根据RS的定义把资料切割为多条记录,
awk一次仅读取一条记录,以进行处理,预设值为 \n (换行符)NF:当前处理行的字段个数
NR:当前处理行的行号
FNR:awk当前读取的记录数,其变量值小于等于NR
(比如当读取第二个文件时,FNR是从0开始重新计数,而NR不会)。NR==FNR:用于在读取两个或两个以上的文件时,判断是不是在读取第一个文件
$0:当前处理行的整行内容
$n:当前处理行的第 n 个字段(第 n 列)
FILENAME:被处理的文件名
示例:
#指定参数 $0 表示所有 $1 表示第一列
[root@VM-16-8-centos www]# free | awk '{print $1 " " $3}'
total free
Mem: 2607280
Swap: 0# NR 当前行号
[root@VM-16-8-centos www]# free |awk '{print NR}'
1
2
3
# NF 显示当前行的列数
[root@VM-16-8-centos www]# free |awk '{print NF}'
6
7
4# 引申 打印最后一列可以写作
[root@VM-16-8-centos www]# free |awk '{print $NR}'
total
3782688
0
#倒数第二列
[root@VM-16-8-centos www]# free |awk '{print $ (NF-1)}'
buff/cache
1009156
0#文件名
[root@VM-16-8-centos www]# awk '{print FILENAME}' te
te
te
te#awk可以通过-v(variable)选项设置或者修改变量的值,我们可以使用-v定义新的变量,也可以使用该选项修改内置变量的值。
[root@VM-16-8-centos www]# awk -v x="Tom" '{print x}' te
Tom
Tom
Tom# 指定分隔符 FS 加 -v
[root@VM-16-8-centos www]# awk -v FS='' '{print $3}' te
1
1
1
# 指定多个分隔符 下面指 冒号、逗号或空格分隔
[root@VM-16-8-centos www]# awk -v FS="[:, ]" '{print $3}' te
2
2
2
# -v FS 等同于直接用 -F
[root@VM-16-8-centos www]# awk '{print $0}' te
a 1 2 3:aa
b 1 2 3:bb
c 1 2 3:cc
[root@VM-16-8-centos www]# awk -F"[:, ]" '{print $NF}' te
aa
bb
cc
# 内置变量OFS保存的是输出字段的分隔符,默认为空格,而变量ORS保存的是输出记录的分隔符,默认为换行符\n。这些内置变量也都可以使用-v选项来自定义修改。
更多推荐
刷刷shell提总结下— 不用总忘还是常总结啊
发布评论