awk中的NR FNR】的更多相关文章

shell编程中,awk简直就是一把利器,你能够把它看成shell的一部分,也能够看成一种单独的语言,功能十分强大.今天先来说一说NR与FNR 先准备两个文件: 1.txt,内容为: user password wolf 123456 zys 123 2.txt 内容为: id user 0001 wolf 0002 xiaozhai 事实上在处理单个文件时,NR与FNR都一样.表示当前读取的行号,如运行awk '{print NR}' 1.txt 和运行 awk '{print FNR}' 1…
一.NR和FNR 1.释义 NR: 表示当前读取的行数 FNR:当前修改了多少行 2.举例 比如现在AWK处理到第五行.第一行没有进行操作,2,3,4,5行进行了操作,那么NR=5,FNR=4 NR==FNR 表示从起始行到当前行,awk都进行了操作,比如修改,添加等等 : 二.NF和$NF 1.释义 NF:浏览记录的域的个数 $NF: 最后一个列,输出最后一个列的内容 2.举例 [root@vshi-template shell]# pwd /root/guanyy/scripts/shell…
NR,表示awk开始执行程序后所读取的数据行数. FNR,与NR功用类似,不同的是awk每打开一个新文件,FNR便从0重新累计. 下面看两个例子: 1,对于单个文件NR 和FNR 的 输出结果一样的 : # awk '{print NR,$0}' file1 1 a b c d 2 a b d c 3 a c b d #awk '{print FNR,$0}' file1 1 a b c d 2 a b d c 3 a c b d 2,但是对于多个文件 : # awk '{print NR,$0…
awk中NF和NR的意义,其实你已经知道NF和NR的意义了,NF代表的是一个文本文件中一行(一条记录)中的字段个数,NR代表的是这个文本文件的行数(记录数).在编程时特别是在数据处理时经常用到.建议你看看有关awk编程方面的资料,这可是一个功能非常强大的工具. 看个例子: cal 9 2003 September 2003            # NR=1;NF=2 Su Mo Tu We Th Fr Sa         # NR=2;NF=7 1  2  3  4  5  6       …
遇到问题: 现在有两个脚本,我想 将file1中的内容按file2来匹配 [root@154 home]# cat file1 3-1-1 POTV=1,POTA=0,POTP=2 1-4-76 POTV=1,POTA=0,POTP=1 2-1-2 POTV=1,POTA=1,POTP=1 3-1-4 POTV=1,POTA=1,POTP=2 4-1-5 POTV=1,POTA=1,POTP=2 7-1-2 POTV=1,POTA=1,POTP=2 3-1-10 POTV=1,POTA=1,PO…
在openwrt文件 ar71xx.sh中 查询设备类型时,有这么一句, machine=$(awk 'BEGIN{FS="[ \t]+:[ \t]"} /machine/ {print $2}' /proc/cpuinfo)解决:1)查看cpuinforoot@hbg:/dev# cat  /proc/cpuinfo system type             : Qualcomm Atheros QCA9533 rev 2machine                 : At…
转自:http://my.oschina.net/leejun2005/blog/100710 最近有需求需要本地处理一些临时的数据,用做统计分析.如果单纯的 MYSQL 也能实现, 不过一堆临时数据这样从 mysql 导来导去还是挺麻烦的,比较理想的选择是本机装个 cygwin 环境,然后可以用 awk 等 shell 工具做即时处理. 本文主要讲述如何在 awk 中实现 SQL 的常用操作,当做个简单的 awk 入门分享.虽然文中部分 awk 会有其它更简洁高效的 shell 命令去完成,亦…
awk中NF和NR的意义,其实你已经知道NF和NR的意义了,NF代表的是一个文本文件中一行(一条记录)中的字段个数,NR代表的是这个文本文件的行数(记录数). 看个例子: cal 9 2003 September 2003            # NR=1;NF=2 Su Mo Tu We Th Fr Sa         # NR=2;NF=7 1  2  3  4  5  6         # NR=3;NF=6 7  8  9 10 11 12 13         # NR=4;NF…
在awk中,如果调用next,那么next之后的命令就都不执行了.此行文本的处理到此结束,开始读取下一条记录并操作. 实例如下: [plain] view plain copy zoer@ubuntu:~$ cat data 1000 naughty 500 cc 400 zoer 100 zoer@ubuntu:~$ awk '{if(NR==1){next} print $1,$2}' data naughty 500 cc 400 zoer 100 比如说我们有一个data文件,存放了每个…
shell编程系列21--文本处理三剑客之awk中数组的用法及模拟生产环境数据统计 shell中的数组的用法: shell数组中的下标是从0开始的 array=("Allen" "Mike" "Messi" "Jerry" "Hanmeimei" "Wang") 打印元素: ]} 打印元素个数: echo ${#array[@]} 打印某个元素长度: ]} 给元素赋值: array[]=…
system只能对命令的输出结果输出到终端. getline在awk中可以使命令的输出结果传到一个变量中保存. # awk 'BEGIN{system("date")|getline out;print out}' Sun Jan 1 22:11:58 CST 2017 sh: 1: 0: not found # awk 'BEGIN{"date"|getline out;print out}' Sun Jan 1 22:13:47 CST 2017 # awk '…
awk中分隔符转换的问题(转) 在awk中明明用OFS重新设置了分隔符,为什么在输出的时候还是原样输出呢! 他是这么写的:    echo 1,2,3,4 | awk 'BEGIN{FS=",";OFS="|"}{print}'".        其实在awk中,只设置分隔符而不改变文件的内容,重新设置的分隔符是不会生效的,所以必须让awk认为你改变分隔符的同时也改变了文件的内容才行,重新改动如下:     echo 1,2,3,4 | awk 'BEIG…
在awk中可以直接执行shell命令. zoer@ubuntu:~$ touch a zoer@ubuntu:~$ touch b zoer@ubuntu:~$ cat a.txt a b zoer@ubuntu:~$ awk '{cmd="rm "$0;system(cmd)}' a.txt zoer@ubuntu:~$ ls a.txt      dd            important    mysql                py       testdata da…
 今天用到awk ofs 看到一篇不错文章 awk中RS,ORS,FS,OFS区别与联系 张映 发表于 2010-12-02 分类目录: shell 标签:awk, FS, OFS, ORS, RS, shell 学习awk时,一定要记得动手去实践,只有在实践中才能发现问题,以下就我在学习中和实践中的经验,总结一下RS,ORS,FS,OFS的区别和联系. 一,RS与ORS 1,RS是记录分隔符,默认的分隔符是\n,具体用法看下 [root@krlcgcms01 mytest]# cat test…
Awk中调用shell命令 需求 在awk中,有时候需要调用linux系统中命令,如计算字符串的MD5值,并保存下来. 方法参考 call a shell command from inside awk and pass some awk variables to the shell command cmd=sprintf("md5sum %s | cut -f2,2", url); #printf("command %s\n", cmd); cmd | getli…
linux awk 中 RS,ORS,FS,OFS 区别与联系 http://blog.csdn.net/jesseen/article/details/7992929…
AWK中的FIELDWIDTHS是一个很好用的变量,这个变量可以指定字符串按照怎么样的宽度进行展示 实例一: 要求: 032130 032131 146230 035048 222049 095070 095261 155052 142050 替换成为IP地址: 32.130 32.131 146.230 35.48 222.49 95.70 155.52 142.50 48.40 解决办法: awk -vFIELDWIDTHS="3 3"  '{print (+$1)".&…
awk中使用shell的环境变量一:"'$var'"这种写法大家无需改变用'括起awk程序的习惯,是老外常用的写法.如:var="test"awk 'BEGIN{print "'$var'"}'这种写法其实际是双括号变为单括号的常量,传递给了awk. 如果var中含空格,为了shell不把空格作为分格符,便应该如下使用:var="this is a test"awk 'BEGIN{print "'"$var…
一个实际应用例子: 在awk中,通过system调用连接数据库并作select操作,select语句中where条件来自于一个文件(file)的第一个域($1). $ cat file ... ... 1. 用awk实现: awk '{system("mysql -u root -proot mydatabase -Bse \"select id,name from tables where id=""\047"$1"\047"&quo…
回到: Linux系列文章 Shell系列文章 Awk系列文章 awk变量 awk的变量是动态变量,在使用时声明. 所以awk变量有3种状态: 未声明状态:称为untyped类型 引用过但未赋值状态:unassigned类型 已赋值状态 引用未赋值的变量,其默认初始值为空字符串或数值0. 在awk中未声明的变量称为untyped,声明了但未赋值(只要引用了就声明了)的变量其类型为unassigned. gawk 4.2版提供了typeof()函数,可以测试变量的数据类型,包括测试变量是否声明.…
shell编程系列19--文本处理三剑客之awk中的字符串函数 字符串函数对照表(上) 函数名 解释 函数返回值 length(str) 计算字符串长度 整数长度值 index(str1,str2) 在str1中查找str2的位置 返回值为位置索引,从1开始计数 tolower(str) 转换为小写 转换后的小写字符串 toupper(str) 转换为大写 转换后的大写字符串 substr(str,m,n) 从str的m个字符开始,截取n位 截取后的子串 split(str,arr,fs) 按f…
linux awk的 while.do-while和for语句中允许使用break,continue语句来控制流程走向,也允许使用exit这样的语句来退出.break中断当前正在执行的循环并跳到循环外执行下一条语句.if 是流程选择用法. awk中,流程控制语句,语法结构,与c语言类型.下面是各个语句用法. 一.条件判断语句(if) if(表达式) #if ( Variable in Array ) 语句1 else 语句2 格式中"语句1"可以是多个语句,如果你为了方便Unix aw…
结合编辑数据文件的shell脚本学习awk传参方式,该脚本功能: a.取VIDEOUSR_11082017_0102_ONLINE_STASTIC.dat文件中第87个字段的低8位: b.将每行数据的第3列和第87列对调: 3.修改后的数据生成到最新时间戳文件中. 1.常规用法 #!/usr/bin/bash ]];then srcfile="$1" #文件名 bit=$ #低bit位 filetimetmp=${srcfile#*_} filetime=${filetimetmp%%…
1.通过命令行参数定义变量时引用: awk -v awk变量名= shell变量名 #!/bin/bash var4bash=test awk -v var4awk="$var4bash"  'BEGIN { print  var4awk}' 2.在awk中直接引用,使用"'$var'" ,注意使用前格式必须是先用单引号括住再用双引号括住: #!/bin/bash var=test awk 'BEGIN { print "'$var'" }' 注…
目录 1.AWK的条件表达 2.条件表达式说明 (1)BEGIN (2)END (3)关系运算符 (4)说明AWK中条件表达式的执行过程 (5)AWK中使用正则表达式 (6)A~B练习 1.AWK的条件表达 如下图所示: 2.条件表达式说明 以下练习使用如下文本: ID Name Python Linux MySQL Java 1 Tangs 88 87 86 85.55 2 Sunwk 99 98 97 96,66 3 Zhubj 77 76 75 74.44 4 Shahs 66 65 64…
    9月1号,导出sql文件后,想到了awk,但很复杂.想到了用sed前期处理+python排序比较的区间查重法.编写加调试用了约3小时. 9月2号,编写C代码的sql语句过程中,发现排序可以交mysql,于是,又使用了约一个小时,学习并写出了一句命令行区间查重. 所以,方法不止一种,经验多了,才能快速找到最正确最快的方向. 重点记录第二种方法,此时是9月3号早上了.一行命令查重: $ mysql -upublic -ppublic ia_gcms_2014 -e "select Fgcms…
学习AWK语言 https://awk.readthedocs.org/en/latest/chapter-one.html http://www.ibm.com/developerworks/cn/education/aix/au-gawk/section5.html#ibm-pcon 一些变量: NF :字段个数 NR :行数 FS:字段分隔符 RS:记录分隔符 OFS:输出字段分隔符 ORS:输出记录分隔符 IGNORECASE  当IGNORECASE 设置为非空值,GAWK 将忽略模式…
sed意为流编辑器(Stream Editor),在Shell脚本和Makefile中作为过滤器使用非常普遍,也就是把前一个程序的输出引入sed的输入,经过一系列编辑命令转换为另一种格式输出.sed和vi都源于早期UNIX的ed工具,所以很多sed命令和vi的末行命令是相同的. sed命令行的基本格式为 sed option 'script' file1 file2 ... sed option -f scriptfile file1 file2 ... sed处理的文件既可以由标准输入重定向得…
Linux处理文本工具     grep: 过滤文本内容     sed:  编辑文本内容     awk:   显示文本      awk:  Aho Peter Weinberger  Kernighan 报告生成器,以特定的条件查找文本内容,在以特定的格式显示 awk命令的格式: # awk [option] 'script' file1 file2... # awk [option] 'PATTERM{action}' file1 file2... PATTERN:     用文本字符与…
一,RS与ORS 1,RS是记录分隔符,默认的分隔符是\n,具体用法看下 [root@krlcgcms01 mytest]# cat test1     //测试文件 111 222 333 444 555 666 2,RS默认分割符\n [root@krlcgcms01 mytest]# awk '{print $0}' test1  //awk 'BEGIN{RS="\n"}{print $0}' test1 这二个是一样的      RS="" 表示分隔符为空…