字符串拼接

简单拼接

chapter_3_2-1.awk

BEGIN{
}
{
    a = 10;
    b = 1.56;
    c = "Hello";
    d = " AWK ";

    x = b "" c d "" a " that's all"; 
    print("x: "x);
}
END{
}

$echo ""|awk -f chapter_3_2-1.awk
x: 1.56Hello AWK 10 that's all

不用任何运算符,变量同变量、变量同字符串、字符串同字符串只需要写在同一行即可(为了格式好看之间可以插入空格),并且对于非字符串类型的遍历会被自动转换成字符串后相加。

格式化输出

除简单拼接外可以使用sprintf()函数对字符串做复杂的格式化输出,函数原型如下:

sprintf(fmt, expr-list)
fmt 带有占位符的格式化字符串,类似c的printf()函数 expr-list 变量列表
返回格式化后的字符串

来看一个例程: chapter_3_2-2.awk

BEGIN{
}   
{
    intValue = 10;
    bigValue = 99999;
    floatValue = 3.1415926;
    stringValue = "Hello";

    # 按照整型输出
    print(sprintf("整数输出:[%d] [%d] [%d]", intValue, floatValue, stringValue));

    # 按照浮点数输出,默认6位小数,超出截断
    print(sprintf("浮点数输出:[%f] [%f] [%.2f] [%5.2f]", floatValue, intValue, floatValue, floatValue));

    # 输出不同进制
    print(sprintf("八进制:[%o],十六进制:[%x][%X]", intValue, intValue, intValue))

    # 指定宽度输出
    print(sprintf("定宽数字:[%4d] [%-4d] [%04d] [%4d]", intValue, intValue, intValue, bigValue));
    print(sprintf("定宽字符串:[%2s] [%10s] [%2.1s]", stringValue, stringValue, stringValue));

}
END{
}

$echo ""|awk -f chapter_3_2-2.awk
整数输出:[10] [3] [0]
浮点数输出:[3.141593] [10.000000] [3.14] [ 3.14]
八进制:[12],十六进制:[a][A]
定宽数字:[ 10] [10 ] [0010] [99999]
定宽字符串:[Hello] [ Hello] [ H]

results matching ""

    No results matching ""