- awk內置變量
- 圖片來自:https://www.cnblogs.com/jiqianqian/p/7944013.html
[root@izwz97473w2ydu1pgsmzk4z test]# cut -f 2 student.txt
NAME
1 furong F 56
2 fengjie F 76
3 cang F 99
[root@izwz97473w2ydu1pgsmzk4z test]# vim student.txt
[root@izwz97473w2ydu1pgsmzk4z test]# cut -f 2 student.txt
NAME
furong
fengjie
cang
- 侷限性:df -h搜索不起作用。因爲df- h下面的表格不是以空格作爲分隔符
- 注意小數點
[root@izwz97473w2ydu1pgsmzk4z test]# printf %s %s %s 123 4 5 6
%s%s123456[root@izwz97473w2ydu1pgsmzk4z test]# printf '%s' $(cat student.txt)
IDNAMEGENDERMARK1furongF562fengjieF763cangF99[root@izwz97473w2ydu1pgsmzk4z test]#
[root@izwz97473w2ydu1pgsmzk4z test]# printf '%s\t%s\t%s\t\n' $(cat student.txt)
ID NAME GENDER
MARK 1 furong
F 56 2
fengjie F 76
3 cang F
99
[root@izwz97473w2ydu1pgsmzk4z test]# printf '%s\t%s\t%s\t%s\n' $(cat student.txt)
ID NAME GENDER MARK
1 furong F 56
2 fengjie F 76
3 cang F 99
- 關於awk和printf語句
- 因爲單引號被awk使用,所以你在printf裏面再寫單引號會導致混淆,所以,裏面的printf語句不使用單引號,但是,轉義符號必須使用雙引號括起來,不然也是無效的
- 不加任何條件時候,無條件執行
[root@izwz97473w2ydu1pgsmzk4z test]# awk '{printf $1 "\t" $4 "\n"}' student.txt
ID MARK
1 56
2 76
3 99
[root@izwz97473w2ydu1pgsmzk4z test]#
[root@izwz97473w2ydu1pgsmzk4z test]# df -h | grep "^/dev$"
[root@izwz97473w2ydu1pgsmzk4z test]# df -h | grep "/dev$"
devtmpfs 910M 0 910M 0% /dev
[root@izwz97473w2ydu1pgsmzk4z test]# df -h | grep "/dev$" | awk 'printf{ $4 "\n"}'
awk: cmd. line:1: printf{ $4 "\n"}
awk: cmd. line:1: ^ syntax error
[root@izwz97473w2ydu1pgsmzk4z test]# df -h | grep "/dev$" | awk '{printf $4"\n"}'
910M
[root@izwz97473w2ydu1pgsmzk4z test]# df -h | grep "/dev$" | awk '{printf $4"\n"}'|cut -d 'M'
cut: you must specify a list of bytes, characters, or fields
Try 'cut --help' for more information.
[root@izwz97473w2ydu1pgsmzk4z test]# df -h | grep "/dev$" | awk '{printf $4"\n"}'|cut -d 'M' -f 1
910
[root@izwz97473w2ydu1pgsmzk4z test]#
- 先讀取一行數據,在從中按照條件來截取
[root@izwz97473w2ydu1pgsmzk4z test]# cat /etc/passwd |grep /bin/bash |awk '{FS=":"}{printf $1 "\t" $4 "\n"}'
root:x:0:0:root:/root:/bin/bash
admin 1000
[root@izwz97473w2ydu1pgsmzk4z test]# cat /etc/passwd |grep /bin/bash |awk 'BEGIN{FS=":"}{printf $1 "\t" $4 "\n"}'
root 0
admin 1000
[root@izwz97473w2ydu1pgsmzk4z test]# awk '{print $1 "\t" $4}' student.txt
ID MARK
1 56
2 76
3 99
[root@izwz97473w2ydu1pgsmzk4z test]# awk '{print $1 "\t" $4}' student.txt
student.txt zheng.txt
[root@izwz97473w2ydu1pgsmzk4z test]# awk 'BEGIN{print i am sb}{print $1 "\t" $4}' student.txt
ID MARK
1 56
2 76
3 99
[root@izwz97473w2ydu1pgsmzk4z test]# awk 'BEGIN{print "i am sb"}{print $1 "\t" $4}' student.txt
i am sb
ID MARK
1 56
2 76
3 99
[root@izwz97473w2ydu1pgsmzk4z test]# awk 'END{print "i am sb"}{print $1 "\t" $4}' student.txt
ID MARK
1 56
2 76
3 99
i am sb