1:tail -5 /etc/fstab | awk ‘{print $2,$4}‘
打印/etc/fstab 文件里后五行的第2和第4段内容
[[email protected] temp]# cat /etc/fstab # # /etc/fstab # Created by anaconda on Wed Dec 30 06:43:45 2015 # # Accessible filesystems, by reference, are maintained under ‘/dev/disk‘ # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info # UUID=42725ac6-787d-4be4-a766-a4b9325eba7e / ext4 defaults 1 1 UUID=ec7cf699-9e55-4305-a463-859f8ba83f3b /boot ext4 defaults 1 2 UUID=52937bf3-72c9-48d7-a05c-72726731c995 swap swap defaults 0 0 tmpfs /dev/shm tmpfs defaults 0 0 devpts /dev/pts devpts gid=5,mode=620 0 0 sysfs /sys sysfs defaults 0 0 proc /proc proc defaults 0 0
[
[email protected] temp]# tail -5 /etc/fstab |awk ‘ {print $2,$4}‘ swap defaults /dev/shm defaults /dev/pts gid=5,mode=620 /sys defaults /proc defaults
[[email protected] temp]# tail -5 /etc/fstab |awk ‘ {print $2,$4}‘
命令解释: |左边表示取出 /etc/fstab 的后五行
awk ‘ {print $2,$4}‘ 取出2,4段的文件内容
“awk ‘ {print #,#}‘ ” 是基本使用格式,其实“ ‘ {”之间可以放置输出内容的分隔符
下边我们用制定变量模式来做个例子:
[[email protected] temp]# awk -v FS=: ‘ {print $1,$7}‘ /etc/passwd | head -5 root /bin/bash bin /sbin/nologin daemon /sbin/nologin adm /sbin/nologin lp /sbin/nolo
gin
"-v"表示我后边要定义变量了 “FS”是input Field Seperator缩写,意思为输入字段的分隔符,默认为空白,我这里认为定义FS=:
当然我们其实可以直接使用-F 选项 “awk -F:‘ {print $1,$7}‘ /etc/passwd | head -5” 这个根上边的结果是一样的
与FS相反,OFS即 Output Field Seperator. 我们举个例子说明他的用法
[[email protected] temp]# awk -F: -v OFS=: ‘{print $1,$7}‘ /etc/passwd |head -5 root:/bin/bash bin:/sbin/nologin daemon:/sbin/nologin adm:/sbin/nologin lp:/sbin/nologin
其实就在前边多个变量定义“ OFS=:”
[[email protected] temp]# awk -F: -v OFS=: ‘{print $1,$7}‘ /etc/passwd |[[email protected] temp]# awk -F: -v OFS=# ‘{print $1,$7}‘ /etc/passwd |head -5 root#/bin/bash bin#/sbin/nologin daemon#/sbin/nologin adm#/sbin/nologin lp#/sbin/nologin 换成#也一样
RS :input record seperator 输入时的换行符号
ORS: ouput record seperator 输出时的换行符号
例如 :awk -v RS=‘:‘ ‘{print $0}‘ /etc/passwd |tail -5 [[email protected] temp]# awk -v RS=‘:‘ ‘{print $0}‘ /etc/passwd |tail -5 500 marco-chen /home/marco /bin/bash [[email protected] temp]# tail -1 /etc/passwd marco:x:500:500:marco-chen:/home/marco:/bin/bash
可以看出,他是以:为分隔符,把每一个字段单独放一行。
awk -v ORS=‘:‘ ‘{print $0}‘ /etc/passwd |tail -5
显示文件中每一行的字段数 “NF :number of field 字段数量”
awk ‘ {print NF}‘ /etc/fstab
显示文件中每一行的最后一个字段内容
awk ‘ {print $NF}‘ /etc/fstab 1 2 3 4 5 6 . . 多文件单独计数:FNR awk ‘ {prin FNR}‘ /etc/fstab /etcissue 1 2 . . 1 2 . . awk ‘ {print FILENAME}‘ /etc/passwd
自定义变量:
(1) -v var=value (2) program中直接定义 可以直接引用不用$符号 例如 :awk -v test=‘good luck‘ ‘{print test}‘ /etc/fstab good luck good luck good luck good luck good luck good luck good luck 。。。。。
fstab中有多少行就显示多少个goodluck
awk ‘{test="good luck";print test}‘ /etc/fstab
这条操作同上一条一样
简单应用就到这里吧下边的太难了