首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

正则复习2

流程: 当读取1.txt时 第一行时:NR=0,FNR=0, 第二行时:NR=1,FNR=1, …… 最后一行时,NR=3,FNR=3, 然后开始读2.txt 读2.txt第一行时,NR=4,FNR=0...,此时NR>FNR,所以开始打印第一行1 ab aa 第二行时,NR=5,FNR=2,同样满足NR>FNR,所以开始打印第二行2 cd bb …… 2.txt最后一行时,NR=7,FNR=4,打印最后一行...5 de 从上面我们发现几个特点: 1、第二个文件有几行,就打印几行,因为只有读到第二个文件时,才满足NR>FNR,才能打印 2、NR、FNR都是从零开始计数,NR不清零,FNR读完一个文件后清零 3、...%s 后记得要有一个空格,否则最后cat出来就是完全连在一起的,中间连空格都没有 应用举例:一个文件每行都有一个数字,现在需要把每行的数字用“+”连接起来,文件内容如下: ?...命令示例:awk '{printf("%s+"),$0}' 1.txt; echo "" ? 这里注意,最后一个是带“+”的。所以echo "" 的作用是换行。

1.6K10
您找到你想要的搜索结果了吗?
是的
没有找到

Linux Shell工具篇 - 文本分析工具awk

$1表示当前行的第一个域,$2表示当前行的第二个域,……以此类推。...:%2s, 列数:%1s, 内容:%2s\n",FILENAME,NR,NF,$O)}' passwd # printf(格式字符串,变量1,变量2,...) # 格式字符串: %ns 输出字符串,n...是数字,指代输出几个字符, n不指定自动占长度 # 格式字符串: %ni 输出整数,n 是数字,指代输出几个数字 # 格式字符串: %m.nf 输出浮点数,m n 是数字,指代输出的整数位数小数位数...运行效果 7.打印第一列 按照”:” 分割查询第一列打印输出: awk -F ':' '{print $1}' passwd 运行效果 8.打印最后一列 按照”:” 分割查询最后一列打印输出: awk...NF-N) N是几, 就是倒数第几列 运行效果 10.打印10到20行的第一列 获取第10到20行的第一列的信息: awk -F: '{if(NR>=10 && NR<=20) print $1}'

1.6K20

Linux三剑客之awk命令详解及相关实例

expr2 :  expr3 第一个表达式为真,执行expr2,否则执行expr3 = += -= *= /= %= ^= 变量赋值运算符 须知:在awk中,有3种情况表达式为假:数字0,空字符串未定义的值...awk中数组称为关联数组,不仅可以使用数字作为下标,还可以使用字符串作为下标。 数组元素的键值存储在awk程序内部的一个表中,该表采用散列算法,因此数组元素是随机排序。...=5)printf "%s,", 1,2,3,4,5 小括号中的5是最后一个数字。...max)max= g h 3 e f 3 7)去除第一行最后一行 # seq 5 |awk'NR>2{print s}{s=$0}' 2 3 4 读取第一行,NR=1,不执行print s,s=1 读取第二行...,NR=2,不执行print s,s=2 (大于为真) 读取第三行,NR=3,执行print s,此时s是上一次p赋值内容2,s=3 最后一行,执行print s,打印倒数第二行,s=最后一行 获取Nginx

1.2K10

9.7 awk工具(下)

7的字符,并打印出来所在行 这里双引号里面的数字表示 字符 ——>通过ASCII码进行比较 数字比大写字母小,大写字母比小写字母小 用双引号中字符的的第1个字符去第3段进行比较 && 表示 的意思...bin的段,然后打印1,第3,第7段,用 #号 区分 语法:在分割完之后,单引号里面用花括号括起来,给它指定print用到的分隔符OFS ,然后再写条件,最后在写print语句 [root@hf-01...表示 行 sed -n '1,10'p test.txt //打印前十行 awk -F ':' 'NR<=10' test.txt //打印前十行 NR 表示 行,可作为一个判断条件 awk...]# awk -F ':' 'NR<=10' test.txt //打印前十行 rootx:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin...$NR":"$NF}' test.txt //就是文件的第几行一直匹配最后一段,一直持续到第七段结束(只有7段,所以后面为空) - $NR 表示多少行 - $NF 表示7段 所以打印的内容为,

56780

Linux 三剑客之awk

键),-F后也支持正则(案例4) -v :修改变量 $数字:表示取出某一列 $0:表示整行的内容 补充知识:column -t格式化输出,美化操作 awk '{print $0}' a.sh 输出的内容...取出/etc/passwd文件中的第一列最后一列 # 为例节省占用文章空间,这里输出5行 [root@localhost ~]# awk -F: '{print NR,$1,$NF}' /etc/...}' /etc/passwd 案例:要求打印奇数行 [root@localhost ~]# awk -F: 'NR % 2 == 1{print $0}' /etc/passwd 案例:要求每隔5行打印...="hammer";a[1]="ze";print a[0],a[1]}' hammer ze # 注意,数组赋值字母要用引号,不然会被认为是变量,数字没事 # 批量输出 # 打印i显示行号 [root...,打印/etc/passwd第1列 [root@localhost ~]# awk -F":" '{ print $1 }' /etc/passwd # 打印/etc/passwd的第1第三列

62410

shell脚本快速入门之-----正则三剑客之三awk用法大全!!!

数据可以来自标准输入、一个或多个文件,或其它命令的输出。它支持用户自定义 函数动态正则表达式等先进功能,是linux/unix下的一个强大编程工具。它在命令行中使用,但更多是作为脚本来使用。...= 不等于,精确比较 &&  逻辑与 || 逻辑或 + 匹配时表示1个或1个以上 /[0-9][0-9]+/ 两个或两个以上数字.../[0-9][0-9]*/ 一个一个以上数字 FILENAME 文件名 OFS 输出字段分隔符, 默认也是空格,可以改为制表符等 ORS 输出的记录分隔符,默认为换行符...//输出每行的行号 awk -F: '{print NR,NF,$NF,"\t",$0}' /etc/passwd //依次打印行号,字段数,最后字段值,制表符,每行内容 awk -F: 'NR...//显示第5行第6行 route -n|awk 'NR!

98130

Linux | awk 命令「建议收藏」

awk 命令简介 awk 是一个强大的文本分析工具,相对于grep 的查找,sed的编辑,awk 在其对数据分析并生成报告时,显得非常强大,awk 其实是一门语言,”格式扫描处理语言“,它允许您创建简短的程序...awk 命令 -W 打印简短的版权信息 或 打印关于不能向伟统unix平台移植的结构 last 命令用于查询最后登录的5个用户及详情 -n 5 是取最后两个 如果我们只想取登录的用户,使用awk...,所以 $0 代表的是这一行 last -n 5 | awk '{print $0}' # last -n 5 输出相同 -F 的使用 这里使用的例子是var/log/yum.log、文件中的内容...cat awk_test.txt | awk -v a=1 '{print $1 + a}' 结果上面文件中的内容有一点差别,是因为最后一行其实是一个空行,但是在进行加法的时候,这一行也加上了1,但是不是按照数字的加减法的...CONVFMT 数字转换格式(默认值为%.6g)ENVIRON环境变量关联数组 ERRNO 最后一个系统错误的描述 FIELDWIDTHS 字段宽度列表(用空格键分隔) FILENAME 当前文件名

72710

Linux 【命令】

linux # 前面作色数字4表示第四行 # 找出包含地址格式的行 grep -En '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]\.[0-9]' file # 查找时间在 2016...# 表示整个当前行 $1   # 每行第一个字段 NF   # 字段数量变量 NR   # 每行的记录号,多文件记录递增 /[0-9][0-9]+/   # 两个或两个以上数字 /[0-9][0-9]*.../   # 一个一个以上数字 -F'[:#/]'   # 定义三个分隔符 FNR     # 与NR类似,不过多文件记录不递增,每个文件都从1开始 \t   # 制表符 \n   # 换行符 FS   ...df -hl|awk '{print $NF}' # 打印最后一列数据 awk -F: 'NR==5{print}' /etc/passwd # 显示第5行 awk -F: 'NR==5 |...# 输出每行的行号 awk -F: '{print NR,NF,$NF,"\t",$0}' /etc/passwd # 依次打印行号,字段数,最后字段值,制表符,每行内容 awk

19.4K20

详解Linux三剑客之awk

三、记录域 名称 含义 record 记录,行 filed 域,区域,字段,列 1)NF(number of field)表示一行中的区域(列)数量,$NF取最后一个区域。...seq生成1-10的数字,要求只显示计数行 [root@creditease awk]# seq 10|awk '{a[NR]=$0}END{for(i=1;i<=NR;i+=2){print a[i...]}}' 1 3 5 7 9 seq生成1-10的数字,要求不显示文件的后3行 [root@creditease awk]# seq 10|awk '{a[NR]=$0}END{for(i=1;i<=NR...YES AA YES CB NO YES CC NO YES AA YES 解析:使用ifelse,if $0匹配到AA,则打印$0 "YES",else反之打印$0 " NO YES"。...=FNR ##NR不等于FNR c){a=1;aNR} 这样会报错:同一条命令中变量和数组名不能重复 d)printf 输出的时候不换行 e){print },或括号中打印后可直接重定向到一个新文件

1.1K30

学习笔记0411----正则三剑客之sed、awk

把每个单词的第一个小写字母变大写: 3.2 把每个单词的最后一个变为大写字母 3.3 把所有小写变大写: 3.4....大写变小写: 4. sed在某一行最后添加一个数字 5.打印1到100行含某个字符串的行 6.awk 中使用外部shell变量 7. awk 合并一个文件 8.把一个文件多行连接成一行 9.awk中gsub...在某一行最后添加一个数字http://ask.apelearn.com/question/288 删除某行到最后一行 http://ask.apelearn.com/question/213 打印1...大写变小写: sed ‘s/[A-Z]/\l&/g’ filename 4. sed在某一行最后添加一个数字 sed -r ‘s/(^a.)/\1 12/’ test sed -r 's/^a./&...0,a[1]}’ 1.txt 2.txt 说明: awk ‘{print NR,FNR}’ 1.txt 2.txt //首先理解NRFNR的不同(awk支持同时操作多个文件内容) 当NR==FNR

2.6K21

【linux命令讲解大全】050.awk内置变量的使用方法各种运算符详细解析

[G] CONVFMT 数字转换格式(默认值为%.6g)。 [P] ENVIRON 环境变量关联数组。 [N] ERRNO 最后一个系统错误的描述。...[A] NR 表示记录数,在执行过程中对应于当前的行号。 [A] OFMT 数字的输出格式(默认值是%.6g)。 [A] OFS 输出字段分隔符(默认值是一个空格)。...$2=f4 $3=f5 Line No:3, No of fields:3 $0=line3 f6 f7 $1=line3 $2=f6 $3=f7 使用print NF可以打印出一行中的最后一个字段...NR的值就是最后一行的行号,所以END语句块中的NR就是文件的行数。...它负责从输入获得下一行的内容,并给NF,NRFNR等内建变量赋值。如果得到一条记录,getline函数返回1,如果到达文件的末尾就返回0,如果出现错误,例如打开文件失败,就返回-1

17010

linux基础(day28)

,而不是一个数字去计算——>若需求是针对数字的,一定不可以加 双引号 !!!...7的字符,并打印出来所在行 这里双引号里面的数字表示 字符 ——>通过ASCII码进行比较 数字比大写字母小,大写字母比小写字母小 用双引号中字符的的第1个字符去第3段进行比较 && 表示 的意思...表示 行 sed -n '1,10'p test.txt //打印前十行 awk -F ':' 'NR<=10' test.txt //打印前十行 NR 表示 行,可作为一个判断条件 awk...) sed 's/[^0-9a-zA-Z]//'g test.txt 这里在使用-r 参数不使用-r 参数,其表达效果是相同的 10.把test.txt中第一个单词最后一个单词调换位置 sed...([^a-zA-Z])([a-zA-Z][a-zA-Z]*$)/\4\2\3\1/' test.txt 11.把test.txt中出现的第一个数字最后一个单词替换位置 sed 's#\([^

1.5K60

awk工具详解

预设值是’ \n’ 简说:数据记录分隔,默认为\n,即每行为一条记录 案例 awk常用内置变量:1、2、NF、NR1:代表第一列2:代表第二列以此类推 $0:代表整行 NF:一行的列数 NR...:行数 案例: awk -F: NR==10′{print $1}’ zz ##打印第10行第一列 awk -F : ‘{print $NF}’ zz ##打印最后一列 awk ‘END...{print NR}’ zz ##打印总行数 awk ‘END{print $0}’ zz ##打印最后一整行内容 生产案例: 逐行执行开始之前执行什么任务,结束之后再执行什么任务...~/nologin/{print 1 7}’ zz ##打印除了以nologin结尾的 第一列第七列 关于数值与字符串的比较 比较符号: == !...| awk ‘$1%7==0 && $1~/7/’     ##打印200内 被7整除并且 包含7的所有数字 其他内置变量的用法FS、OFS、NR、FNR、RS、ORS 案例: awk ‘BEGIN{

2.9K20

【说站】Linux环境sed工具的使用及工作原理

由此反复,知道最后一行处理完成。...#地址范围也可以使用正则表达式表示: /pat1/,/pat2/ (第一个正则表达式之后到下一个正则表达式中间的内容) sed脚本的指令  p --- 内容打印  Ip --- 忽略大小写输出  d...*inet ([0-9.]+) .*//p' #行首一直到inet 中间空格 #一个以上的数字或点 空格 一直到结尾 ifconfig ens33 | sed -rn '2s/(....*inet )([0-9].*)(netmask.*)//p' #行首一直到inet,中间空格 #数字 #取基名目录名 echo "/etc/netplan/01-netcfg" | sed -nr ...seq 10 | sed -n '2~2p' #使用步进的方式实现 seq 10 | sed -n '1~2!p' #!表示除了这些行,其他的都打印 收藏 | 0点赞 | 0打赏

1.3K20

awk:一个强大的文本分析工具

print为打印的动作,用来打印某个字段。$1为第 1 个字段,$2为第 2 个字段,以此类推。...=表示不匹配,它除了针对某一个段的字符进行逻辑比较外,还可以在两个段之间进行逻辑比较。如下所示: # awk -F ':' '$3 另外,还可以使用 &&||,它们分别表示“并且”“或者”。...OFS-F选项有类似的功能,也是用来定义分隔符的,但是它是在输出的时候定义的。NF表示用分隔符分隔后一共有多少段。NR表示行号。...最后,我们再附上常见正则字符的解释。 .表示任意一个字符,比如空格、特殊符号等。 *表示*前面的字符有 0 个或多个,比如a*那就是 0 个a或者多个a。 .*表示任意个任意字符,就是贪婪匹配了。...表示这里面的任意一个字符,如[abc]就是a或者b或者c。此外,也可以用范围[0-9]表示任意一个数字,用[a-z]表示任意一个小写字母。 ^表示开头。 $表示结尾。

70910

awk命令结构内置变量获取文本某行或某列

=v3 { }类似一个循环体,会对文件中的每一行进行迭代,通常变量初始化语句(如:i=0)以及打印文件头部的语句放入BEGIN语句块中,将打印的结果等语句放在END语句块中。...[G] CONVFMT 数字转换格式(默认值为%.6g)。 [P] ENVIRON 环境变量关联数组。 [N] ERRNO 最后一个系统错误的描述。...[A] NR 表示记录数,在执行过程中对应于当前的行号。 [A] OFMT 数字的输出格式(默认值是%.6g)。 [A] OFS 输出字段分隔符(默认值是一个空格)。...打印完第一列,然后打印第二列: awk '{print $1 $2}' filename 4、打印文本文件的总行数: awk 'END{print NR}' filename 5、打印文本第一行...' 7、打印文件的最后一行 awk 'END{print}' 或 tail -1 file shell里面的赋值方法有两种,格式为 1) arg=`(命令)` 2) arg=$(命令) 因此,如果想要把某一文件的总行数赋值给变量

2.1K20
领券