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(索引节点),属组,权限,时间 ,文件名不属于元数据
系统中分为硬链接和软连接(符号链接)文件。








 
 
