刷刷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.txt

seq -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选项来自定义修改。





你可能感兴趣的:(linux,服务器,linux,运维)