1.有BEGIN{action;..}优先执行 2.从(stdin)中读取内容,执行pattern{action;..}读取文件内容(没有pattern执行print内容) 3.执行END{action;..}内容 三、awk字符 1.-F “分隔符” 指明输入时用到的字段分隔符,默认的分隔符是若干个连续空白符 2.-v变量赋值 3.{ }外指定条件,{ }内指定操作。 4.用逗号...
awk-v RS=""'{print NR,$0}'test.txt 案例7:ARGC和ARGV ARGV表示的是一个数组,数组中保存的是命令行所给的参数 awk'BEGIN{print "开始用awk了"}{print ARGV[0],$0}'test.txtawk'BEGIN{print "开始用awk了"}{print ARGV[1],$0}'test.txtawk'BEGIN{print "开始用awk了"}{print ARGV[0],ARGV[1...
当awk读取多个文件时,NR代表的是当前输入所有文件的全部记录数,而FNR则是当前文件的记录数。如下面的例子: $ awk'{print FILENAME, "FNR= ", FNR," NR= ", NR}'student-marks bookdetails student-marks FNR=1NR=1student-marks FNR=2NR=2student-marks FNR=3NR=3student-marks FNR=4NR=4student-mark...
awk ‘NR==2,NR==3 { print }’ example2.txt “` 在上面的命令中,`NR`是awk的内置变量,表示记录号,即行数。`NR==2,NR==3`表示指定打印第2行到第3行的内容。 输出结果为: “` 2,banana,yellow 3,orange,orange “` 只有指定的行数被打印出来。 ## 7. 结尾文件扩展 在本节中,将介绍如何使用...
下面的print NR,$0也不会执行。下一行开始,程序有开始判断NR%2值。这个时候记录行号是:2,就会执行下面语句块:'print NR,$0' 分析发现需要将包含有“web”行进行跳过,然后需要将内容与下面行合并为一行: at text.txt web01[192.168.2.100] httpd ok tomcat ok sendmail ok web02[192.168.2.101] httpd ok ...
awk 'BEGIN{a="100testa";if(a ~ /^100*/){print "ok";}}' ok awk高级输入输出 读取下一条记录:next 语句 awk中next语句使用:在循环逐行匹配,如果遇到next,就会跳过当前行,直接忽略下面语句。而进行下一行匹配。net语句一般用于多行合并: awk 'NR%2==1{next}{print NR,$0;}' text.txt ...
>>> awk -F"---" '{print NR"|"$1"|"$2"|"NF"|"FILENAME}' log.txt ___ 1|小明,男,23,550^优秀|北京|2|log.txt 2|小丽,女,22,560^优秀|河北|2|log.txt 3|小磊,男,24,530^良好|河南|2|log.txt 4|小召,男,23,540^优良|山东|2|log.txt 5|小欣,女,23,545^优良|山西|2|log...
$ awk-F':''{print NR ") "$1}'demo.txt1)root2)daemon3)bin4)sys5)sync 上面代码中,print命令里面,如果原样输出字符,要放在双引号里面。 awk的其他内置变量如下。 FILENAME:当前文件名 FS:字段分隔符,默认是空格和制表符。 RS:行分隔符,用于分割每一行,默认是换行符。
awk'{print $1, $2}'file 使用分隔符指定列: awk-F',''{print $1, $2}'file 打印行数: awk'{print NR, $0}'file 打印行数满足条件的行: awk'/pattern/ {print NR, $0}'file 计算列的总和: awk'{sum += $1} END {print sum}'file ...
awk'{print $0}'/tmp/hosts#打印每行全部内容 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 同样是输出行号,NR将所有文件的数据视为一个数据流,而FNR则是将多个文件的数据视为独立的若干个数据流,遇到新文件时行号从1开始重新递增。