下面的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'{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 NR,$0}' /etc/grub.conf 显示每行的内容和行号 awk -F: 'BEGIN{OFS="---"}{print $1,$7}' /etc/passwd 显示第一列和第七列,中间用---隔开 awk 'BEGIN{FS=":"}/bash$/{print NR,$1}END{print NR}' /etc/passwd 显示符合模式的用户名和所在的行号最后显示总行号 awk ‘NR==...
[root@dm shell]#awk -v ORS="+++"'{print NR, $0}'test.log1 abc123 ide wdw+++2 dwf 23d dw3 45f w2e+++[root@dm shell]# 把RS和ORS一起使用,在文件中的空格输入到awk,awk认为是换行符。awk输出时,认为换行符是+++。可以这么理解,文件里的空格最终输出后是+++ [root@dm shell]#awk -v R...
awk -F: '{print NR}' /etc/passwd FS : 指定文本内容分隔符(默认是空格) 案例1: awk 'BEGIN{FS=":"}{print $NF, $1}' /etc/passwd 解析: BEGIN{FS=":"} : 相当于指定以 : 为分隔符 $NF : 存储以 : 分隔符的最后一列 $1 : 存储以 : 分隔符的第一列 ...
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'{print FILENAME, NR, NF, ":", $0}'log 4、条件判断 awk 的 pattern 也支持使用条件判断,比如只打印 vel 小于 5.0 的行,命令如下: awk'$2 < 5.0 {print $0}'log 5、统计值的计算 awk 还可以快速计算出一些统计值,比如最大值,最小值,平均值等。
awk -F | ‘NR==FNR{a[2]=0;next}{print a[1]"|"2}’ account cdr 注释: 由NR=FNR为真时,判断当前读入的是第一个文件account,然后使用{a[2]=0;next}循环将account文件的每行记录都存入数组a,并使用$2第2个字段作为下标引用. 由NR=FNR为假时,判断当前读入了第二个文件cdr,然后跳过{a[2]=0;...
awk-vOFS="\t"'{print $1,$2}'/tmp/hosts #以Tab制表符为字段分隔符 awk-vOFS=". "'{print NR,$0}'/tmp/hosts #在每行前面加上行号和点 ORS 保存的是输出记录的分隔符 代码语言:javascript 复制 awk-vORS="-"'{print $1}'/tmp/hosts ...
当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...