博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
awk 变量
阅读量:4049 次
发布时间:2019-05-25

本文共 2275 字,大约阅读时间需要 7 分钟。

– Start

awk 是一种弱类型的语言,它并不像 Java 等其他语言那样严格区分数字和字符串。那 awk 是如何来识别一个变量中存储的是数字还是字符串的呢?答案就是操作符。操作符需要什么类型的数据,变量就会被转换成什么类型的数据。如果对两个变量进行数学运算,那么不管这两个变量中存储的是什么,它们都将被转换为数字。如果字符串中包含的不是数字,它将会被转换成 0。此外,变量也不需要提前申明,变量名区分大小写。

数字变量

#! /usr/bin/awk -fBEGIN {    # 定义整数    int1 = 10;      int2 = -10;      int3 = 10e2; # 10 乘以 10 的 2 次方,e不区分大小写      octal = "\377"; # 八进制以 \ 开头      hex = "\xFF"; # 十六进制以 \x 开头,a,b,c,d,e,f 不区分大小写    # 定义浮点数    float1 = 10.0;      float2 = 10.;      float3 = 0.25;      float4 = .25;      float5 = -10.0e2; # -10.0乘以 10 的 2 次方,e不区分大小写};{};END {    print int1;    print int2;    print int3;    print octal;    print hex;    print float1;    print float2;    print float3;    print float4;    print float5;};

字符串变量

#! /usr/bin/awk -fBEGIN {    # 定义字符串    # 注意字符串不能使用单引号定义    str1 = "Test1\tTest2";    # 字符串长度    printf("The length of str1: %s\n", length(str1));    # 转成小写    printf("The lower case of str1: %s\n", tolower(str1));    # 转成大写    printf("The upper case of str1: %s\n", toupper(str1));    # 查找子串位置    printf("The position of Test2 in str1: %s\n", index(str1, "Test2"));    # 获取子串    printf("The sub string of str1: %s\n", substr(str1, 7, 4));    # 查找匹配    if(match(str1, "[a-zA-Z]+2") != 0) {        print "find pattern in str1";    }    # 替换    printf("After substituted str1: %s\n", gensub("[a-zA-Z]+2", "***", g, str1));};{};END {};

转义字符

awk 支持如下转义字符。

\a       响铃\b       退格\f       换页\n       换行\r       回车\t       水平制表符\v       垂直制表符\ddd     8进制数字\xhex    16进制数字\\       反斜线

内置变量

awk 定义了以下内置变量,在适当的时候,我们可以引用或设置这些变量来得到我们想要的信息。

ARGC        命令行参数数量ARGV        命令行参数数组ARGIND      当前 ARGV 的下标ENVIRON     环境变量关联数组(ENVIRON["HOME"])IGNORECASE  是否忽略大小写FILENAME    当前处理的文件名FS          列分隔符,默认是空格RS          行分隔符,默认是换行符RT          行分隔符,Gawk 使用FIELDWIDTHS 用来生成定长文件NF          当前行的列数NR          当前处理过的行数FNR         当前文件的总行数CONVFMT     默认格式化数字的格式(%.6g)OFMT        默认数字输出格式(%.6g)OFS         输出文件列分隔符,默认是空格ORS         输出文件行分隔符,默认是换行符RSTART      调用 match 函数后, RSTART 保存匹配的位置RLENGTH     调用 match 函数后, RLENGTH 保存匹配字符串的长度ERRNO       保存错误消息BINMODE     二进制模式LINT        同参数 --lintPROCINFO    关联数组,保存当前运行脚本的有关信息,如获取进程号:PROCINFO["pid"]SUBSEP      分离多个下标,默认(\034)TEXTDOMAIN  用来本地转换

– 更多参见:

– 声 明:转载请注明出处
– Last Updated on 2015-10-28
– Written by ShangBo on 2015-10-27
– End

你可能感兴趣的文章
[LeetCode By Python]125. Valid Palindrome
查看>>
[LeetCode By Python]136. Single Number
查看>>
Android/Linux 内存监视
查看>>
Android2.1消息应用(Messaging)源码学习笔记
查看>>
MPMoviePlayerViewController和MPMoviePlayerController的使用
查看>>
CocoaPods实践之制作篇
查看>>
[Mac]Mac 操作系统 常见技巧
查看>>
苹果Swift编程语言入门教程【中文版】
查看>>
捕鱼忍者(ninja fishing)之游戏指南+游戏攻略+游戏体验
查看>>
iphone开发基础之objective-c学习
查看>>
iphone开发之SDK研究(待续)
查看>>
计算机网络复习要点
查看>>
Variable property attributes or Modifiers in iOS
查看>>
NSNotificationCenter 用法总结
查看>>
C primer plus 基础总结(一)
查看>>
剑指offer算法题分析与整理(三)
查看>>
Ubuntu 13.10使用fcitx输入法
查看>>
pidgin-lwqq 安装
查看>>
mint/ubuntu安装搜狗输入法
查看>>
C++动态申请数组和参数传递问题
查看>>