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