printf命令和print命令
printf命令
格式:printf ‘输出类型输出格式’ 输出内容,不会自动换行,不支持数据流,不能用在管道符中
输出类型:%ns:输出n个字符 %ni:输出n个整数 %m.nf:输出浮点数,总共m位,小数位数为n位
输出格式:\n 换行 \r回车 \t制表符
作用:主要用在awk命令中输出数据
egprintf "%s" $(cat test.txt) 以字符串形式输出文件中的内容,不能直接以文件名作为参数 printf "%s\t%s\t%s\n" 1 2 3 输出1 2 3
print命令
格式:print 字符串
作用:主要用在awk命令中输出数据
注意:字符串需要使用双引号包起来。使用$符号调用变量时,放在双引号外边,使用逗号分开,输出时会使用空格将参数分开,否则参数会连在一起。另外,会自动换行。遇到特殊符号比如\n 以及\t等特殊符号时,会转义。在awk命令中,如果print缺少参数,则输出整行
egdate | awk '{print "Today is \n" $1,$2,$3}'
AWK编程
概念
awk可以通过文件或标准输入或其他命令的结果作为输入,对数据进行分割得到记录和字段,每一行作为一个记录,记录间默认使用换行符作为分割符,对记录进行分割得到字段,默认使用空格、制表符作为字段的分割符。¥0指代输入文件的记录, ¥n代表记录的第n个字段。使用END模式时,必须输入文件名,使用BEGIN模式时可以不用输入文件名
格式:awk ‘条件1{动作1}条件2{动作2}条件3{动作3}…..’ 文件名
条件:一般使用正则表达式、关系表达式、比较表达式、作为条件,在条件满足时执行对应动作,也可以不写条件只写动作。
动作:格式化输出、流程控制语句,如果动作中含有多条语句,则用分号分开,如果不写动作,则默认为输出,{}代表空操作,即不执行任何操作,也不输出!
awk命令可以使用内置变量,常用内置变量有
变量 | 描述 |
---|---|
NR | 代表行号 |
NF | 代表记录有几个字段 |
FS | 代表输入字段分隔符,默认为空格或制表符 |
RS | 代表输入记录分隔符,默认为换行符 |
OFS | 代表输出字段分隔符,默认为空格或制表符 |
ORS | 代表输出记录分隔符,默认为换行符 |
ARGV | 数组,用于存放awk命令的参数,数组下标从0开始,ARGV[0]代表awk |
ARGC | 代表命令行参数个数 |
eg
“`
vi awkcommandscript
BEGIN {
for(i=0;i