• 欢迎访问显哥博客,本网站纯属学习技术,绝无商业用途,欢迎小伙伴们共同学习!研究技术!QQ:52249909 加我QQ
  • 世界75亿人,这么小的概率,能认识你,是我一生的幸运,不妨加个QQ接触一下:52249909 加我QQ

三剑客之awk命令和文件基础格式知识【显哥出品,必为精品】

运维基础 lixian 2年前 (2019-12-05) 324次浏览 3个评论 扫描二维码
文章目录[隐藏]

1、awk 命令

#取列,计算,统计,数组,循环,判断
选项:
-F #指定分隔符,默认是以空白字符为分隔符
NR #表示行号
NF #表示每一行的列数
$NF #表示最后一列
$0 #整行内容
$数字 #表示取出哪一列

&& #并且
| | #或者
! #排除
, #取出连续的
; #多条命令分割

取行:

[root@lixian ~]# awk 'NR==1' passwd                 取出第一行
root:x:0:0:root:/root:/bin/bash
[root@lixian ~]# awk 'NR==1,NR==3' passwd     取出第一行到第三行
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
[root@lixian ~]# awk 'NR==1;NR==5' passwd   取出第一行和第五行
root:x:0:0:root:/root:/bin/bash
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
[root@lixian ~]# awk 'NR<3' passwd                  取出大于3以后的行
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
[root@lixian ~]# awk 'NR>10 && NR<13' passwd    取出大于10,并且小于13的行
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
[root@lixian ~]# awk 'NR>18 || NR<3' passwd           取出大于18,或者小于3的行
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
lixian:x:1000:1000::/home/lixian:/bin/bash
li:x:1001:1001::/home/li:/bin/bash
lx:x:1002:1002::/home/lx:/bin/bash

显示行号:

[root@lixian ~]# awk '{print NR,$1}' passwd 
1 root:x:0:0:root:/root:/bin/bash
2 bin:x:1:1:bin:/bin:/sbin/nologin
3 daemon:x:2:2:daemon:/sbin:/sbin/nologin
4 adm:x:3:4:adm:/var/adm:/sbin/nologin

过滤字符:

[root@lixian ~]# awk '/root/' passwd                 过滤出root的字符串
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
[root@lixian ~]# awk '/^root/' passwd                过滤出以root开头的字符串
root:x:0:0:root:/root:/bin/bash
[root@lixian ~]# awk '/root$/' passwd               过滤出以root结尾的字符串
[root@lixian ~]# awk '/root|adm/' passwd         过滤出root或者adm的字符串
root:x:0:0:root:/root:/bin/bash
adm:x:3:4:adm:/var/adm:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
[root@lixian ~]# awk '/adm/,/sync/' passwd         过滤出adm字符串的行到sync字符串的行
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync

指定分隔符:

[root@lixian ~]# awk -F: '{print $1}' passwd   以:为分隔符,打印第一列
root
bin
daemon
adm
lp

多个分隔符:

[root@lixian ~]# awk -F'[: ]' '{print NR,$1}' passwd   指定多个分隔符并显示行号
1 root
2 bin
3 daemon
4 adm
5 lp
6 sync

排除和取值:

[root@lixian ~]# awk  '!/root/'  passwd 		排除包含root的字符串
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
[root@lixian ~]# awk -F:  '/^root/{print $NF}'  passwd #取出满足以root开头的行并且打印出该行的最后一列
/bin/bash
root
[root@lixian ~]# awk -F:  '/^root/{print $1,$2}'  passwd 	#打印多列内容
root x
root 
[root@lixian ~]# awk -F:  '/^root/{print $3,$1}'  passwd 	#把第三列和第一列倒着显示
0 root
 root

2、column 命令

#排序文件的格式
-t #以tab键的格式进行对文件的内容排序

[root@lixian ~]# awk -F: '{print $1,$NF}' passwd |column -t
root             /bin/bash
bin              /sbin/nologin
daemon      /sbin/nologin
adm            /sbin/nologin
lp                /sbin/nologin
sync            /bin/sync
shutdown    /sbin/shutdown
halt              /sbin/halt

3、文件属性

[root@lixian ~]# ls -il
total 8
67157607 -rw-r–r–. 1 root root 911 Dec 5 10:49 passwd
67157610 -rw-r–r–. 1 root root 22 Dec 5 14:01 test.txt

第一列: 67157607 inode号
第二列: -rw-r–r–. 文件的类型和权限
第三列: 1 文件的硬链接数量
第四列: root 属主
第五列: root 属组
第六列: 911 文件大小,字节大小
七九列: Dec 5 10:49 最后的修改时间
第十列: passwd 文件名(文件名不属于文件属性)

4、文件的类型

文件属性列表第二列第一个字符是文件的类型
一般的类型有:
– 普通文件
d 目录
l 字母L,软连接文件
b 设备文件,块设备文件,磁盘,镜像,光盘
c 设备文件,字符设备,终端
s 套接字文件,socket文件
p 管道文件

文件的扩展名有:
linux中的文件扩展名不具备特殊含义,只是为方便使用
.txt 普通文本
,log 日志
.sh shell脚本
.py Python脚本
.conf 配置文件
.config 配置文件
.zip zip格式的压缩包
.gz gzip格式的压缩包
.tar.gz tar命令归档打包使用gzip格式的压缩包
.rpm 软件安装包
.repo yum仓库配置文件
.xml 配置文件

5、文件的链接文件

文件由用户数据和元数据组成的

用户数据: 真正存在文件的内容的地方。 user data 数据块 我们称之为block

元数据: 文件的属性,大小,inode(索引节点),属组,权限,时间 ,文件名不属于元数据

系统中分为硬链接和软连接(符号链接)文件。


本站博主 , 版权所有丨如未注明 , 均为原创
转载请注明原文链接:三剑客之awk命令和文件基础格式知识【显哥出品,必为精品】
喜欢 (26)
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到
(3)个小伙伴在吐槽
  1. 贫困人口
    匿名2019-12-06 22:16 回复
  2. 写的好棒哦 :razz:
    djs2019-12-06 22:15 回复
  3. 哇,好厉害呀 加油哦
    匿名2019-12-06 22:14 回复