格式化輸出
awk提供兩個高級輸出函數printf和sprintf,他們提供了格式化輸出功能。 - printf函數將格式化字符串打印到標准輸出(stdout) - sprintf 函數則返回“可以賦值給變量的字符串” eg. print.awk# printf & sprintf
{
# 第一個字段
x = $1
b ="foo"
# 格式化輸出
printf("%s got a %d on last test\n","Jim",83)
# 將格式化的字符串賦給變量
myout = sprintf("%s - %d", b, x)
# 簡單輸出,自帶換行
print myout
}
echo 100| awk -f print.awk
Jim got a 83 on last test foo - 100
c ACII字符(char型)
s 字符串
d 十進制整數
ld 十進制長整形
u 十進制無符號整數
lu 十進制無符號長整數
x 十六進制整數
lx 十六進制長整數
o 八進制整數
lo 八進制長整數
e 用科學計數法表示的浮點數
f 浮點數
g 選e/f中較短的一種
- 左對齊修飾符
# 顯示8進制數時在前面加個0;16進制數時在前面加個0x
+ 顯示使用的d、e、f、g格式的整數時,前面加上正負號(+/-)
0 用0而不是空白來填充所顯示的值
[root@web1 test]# cat split.awk
# awk 字符串分隔函數
{
print "\nField seperator = FS \" "FS" \""
n = split($0, array) // 默認使用 空格 為字段分隔符
for(k =1; k <= n; k++) // split函數返回分割後的字符串的個數
{
print "array[k] = " array[k]
}
}
[root@web1 test]# echo "dfssfs sdf dsf dsf "| awk -f split.awk
Field seperator = FS " "
array[k]= dfssfs
array[k]= sdf
array[k]= dsf
array[k]= dsf
[root@web1 test]# cat split.awk
# awk 字符串分隔函數
{
print "\nField seperator = :"
n = split($0, array,":") // 指定分隔符為 ":"
for(k =1; k <= n; k++)
{
print "array[k] = " array[k]
}
}
[root@web1 test]# head -n2 /etc/passwd | awk -f split.awk
Field seperator =:
array[k]= root
array[k]= x
array[k]=0
array[k]=0
array[k]= root
array[k]=/root
array[k]=/bin/bash
Field seperator =:
array[k]= bin
array[k]= x
array[k]=1
array[k]=1
array[k]= bin
array[k]=/bin
array[k]=/sbin/nologin
[root@web1 test]# awk 'BEGIN{ s1 = "hello "; s2 = "ollir "; s = s1 s2 ; print s}'
hello ollir
[root@web1 test]# awk 'BEGIN{ s1 = "hello "; s2 = "ollir "; s = sprintf("%s%s",s1 ,s2); print s}'
hello ollir
print int(10.6)
10
[root@web1 test]# cat rand.awk
BEGIN {
# 沒有顯式調用srand()設置種子,awk使用默認常量作為參數傳入srand()設置固定的種子
print rand() // 隨機數固定
print rand()
# srand()使用當前時間作為參數上設置種子
srand()
print rand() //隨機數與當前時間有關
print rand()
}
{}
[root@web1 test]# echo ""| awk -f rand.awk
0.237788
0.291066
0.0421086
0.447394
[root@web1 test]# echo ""| awk -f rand.awk
0.237788
0.291066
0.874176
0.562551
Linux常用命令之awk http://www.linuxidc.com/Linux/2016-09/135046.htm
Linux系統之文本格式化工具awk http://www.linuxidc.com/Linux/2016-02/128150.htm
AWK簡介及使用實例 http://www.linuxidc.com/Linux/2013-12/93519.htm
Linux awk文本分析工具 http://www.linuxidc.com/Linux/2015-12/126217.htm
Linux文本處理工具之awk http://www.linuxidc.com/Linux/2015-01/111437.htm
如何在Linux中使用awk命令 http://www.linuxidc.com/Linux/2014-10/107542.htm
文本分析工具-awk http://www.linuxidc.com/Linux/2014-12/110939.htm
AWK入門基礎教程 http://www.linuxidc.com/Linux/2016-12/138138.htm
使用awk格式化輸出文本 http://www.linuxidc.com/Linux/2016-04/130193.htm