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

AWK过滤给定变量的第一行和最后一行,丢弃中间行

AWK是一种文本处理工具,它可以根据指定的规则对文本进行分析和处理。在给定变量中,如果我们想要过滤掉第一行和最后一行,丢弃中间行,可以使用AWK的NR(行号)变量来实现。

下面是一个示例的AWK命令:

代码语言:txt
复制
awk 'NR==1 || NR==FNR{first=$0} {last=$0} END{print first; print last}' file.txt

解释:

  • NR==1表示当前行号为1,即第一行。
  • NR==FNR表示当前行号等于文件行号,即最后一行。
  • first=$0将第一行保存在变量first中。
  • last=$0将每一行都保存在变量last中。
  • END{print first; print last}在处理完所有行后,打印出保存的第一行和最后一行。

这样就可以过滤掉给定变量的第一行和最后一行,丢弃中间行。

AWK的优势在于其灵活性和强大的文本处理能力。它可以方便地对文本进行分割、过滤、计算等操作,适用于各种文本处理场景。

在腾讯云的产品中,与文本处理相关的服务包括云函数(SCF)和弹性MapReduce(EMR)等。云函数是一种无服务器计算服务,可以用于编写和运行AWK脚本,实现文本处理功能。弹性MapReduce是一种大数据处理服务,可以通过编写MapReduce程序来实现复杂的文本处理任务。

腾讯云云函数产品介绍链接:https://cloud.tencent.com/product/scf

腾讯云弹性MapReduce产品介绍链接:https://cloud.tencent.com/product/emr

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

vi中跳到文件第一行最后一行

由于vi编辑器不能使用鼠标,所以一个大文件如果要到最后一行只用键盘下键的话会是一个很痛苦过程,还好有各种比较快捷方法归我们使用: 1. vi 编辑器中跳到文件第一行:    a 输入 :0 或者...:1 回车    b 键盘按下 小写 gg 2.vi 编辑器跳到文件最后一行:    a 输入 :$ 回车    b 键盘按下大写 G    c 键盘按 shift + g (其实第二种方法一样...) Vim快速移动光标至行首行尾 1、 需要按快速移动光标时,可以使用键盘上编辑键Home,快速将光标移动至当前行首。...2、 如果要快速移动光标至当前行行尾,可以使用编辑键End。也可以在命令模式中使用快捷键””(Shift+4)。与快捷键”^”0不同,快捷键””前可以加上数字表示移动行数。...例如使用”1”表示当前行行尾,”2”表示当前行一行行尾。

9.3K40

正则复习2

笔记内容: l awk 中使用外部shell变量awk 合并一个文件 l 把一个文件多行连接成一行awk中gsub函数使用 l awk 截取指定多个域为一行过滤两个或多个关键词 l...awk 合并一个文件 http://ask.apelearn.com/question/493    我有这样一个需求,我需要把两个文件中,第一列相同合并到同一行中。...流程: 当读取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,打印最后一行...%s 后记得要有一个空格,否则最后cat出来就是完全连在一起中间连空格都没有 应用举例:一个文件每行都有一个数字,现在需要把每行数字用“+”连接起来,文件内容如下: ?

1.6K10

Shell实用工具

示例: 缓存空间数据交换 演示1: 第一行粘贴到最后1 将模式空间第一行复制到暂存空间(覆盖方式),并将暂存空间内容复制到模式空间中最后一行(追加方式) sed '1h;$G' sed.txt...# 1h 从模式空间中将第一行数据复制到暂存空间(覆盖方式) # $G 将暂存空间中内容复制到模式空间中最后一行(追加方式) ?...演示2: 第一行删除后粘贴到最后1 将模式空间第一行复制到暂存空间(覆盖方式)并删除, 最后将暂存空间内容复制到模式空间中最后一行(追加方式) sed '1{h;d};$G' sed.txt #...1{h;d}对模式空间中第一行数据同时进行复制到暂存空间(覆盖方式)删除模式空间中第一行数据 ?...演示3: 第一行数据复制粘贴替换其他行数据 将模式空间第一行复制到暂存空间(覆盖方式), 最后将暂存空间内容复制到模式空间中替换从第2开始到最后一行一行数据(覆盖方式) sed '1h;2,$g

7.8K10

awk工具详解

它是专门为文本处理设计编程语言,也是处理软件,通常用于扫描、过滤、统计汇总工作数据可以来自标准输入也可以是管道或文件 工作原理(1): 当读到第一行时,匹配条件,然后执行指定动作,再接着读取第二数据处理...预设值是’ \n’ 简说:数据记录分隔,默认为\n,即每行为一条记录 案例 awk常用内置变量:1、2、NF、NR、 1:代表第一列2:代表第二列以此类推 $0:代表整行 NF:一行列数 NR...:行数 案例: awk -F: NR==10′{print $1}’ zz ##打印第10第一awk -F : ‘{print $NF}’ zz ##打印最后一列 awk ‘END...~/nologin/{print 1 7}’ zz ##打印除了以nologin结尾 第一第七列 关于数值与字符串比较 比较符号: == !...,$1$2中间要用逗号分隔,因为逗号默认被映射为OFS变量,而这个变量默认是空格 awk ‘{print FNR,$0}’ /etc/hosts /etc/passwd        ##可以看出FNR

2.9K20

Linux 三剑客之 awk 实战详解教程

字段,其实就是列概念; 循环执行 body 块中命令,每读取一行,执行一次 body,最终完成 body 执行; 最后,执行 END 命令,通常会在 END 中输出最后结果; awk 是输入驱动...实战 - 高级 (一)条件匹配 列出 root 用户所有文件,以及第一行文件 ? 上边匹配第三列中包含 root ,~ 其实就是正则表达式匹配。...第 5 列表示文件大小,每读取一行就会将该文件大小计算到 sum 变量中,在最后 END 阶段打印出 sum,也就是所有文件大小总和。...在 BEGIN 阶段,我们初始化了相关变量,并打印了表头格式 在 body 阶段,我们读取每一行数据,计算该学科该同学总成绩 在 END 阶段,我们先打印了表尾格式,并打印总成绩,以及计算了平均值...总结归纳 通过上述示例,我们学习到了 awk 工作原理,下边我们来总结下几个概念常用知识点。 (一)内置变量 1. 每一行内容记录,叫做记录,英文名称 Record 2.

1.6K31

Linux文本处理工具浅谈-awk sed grep

Linux文本处理工具浅谈 awk 老大 【功能说明】 用于文本处理语言(取过滤),支持正则 NR代表行数,$n取某一列,$NF最后一列 NR==20,NR==30 从20到30 FS竖着切...s 替换每一行匹配到第一个字符 g 替换每一行全部 p 输出 w 另存文件 e 执行bash命令 q 不继续往下读取 概括流程:Sed软件从文件或管道中读取一行,处理一行...对1,3,5,7,……操作 10,${sed-commands} 对10到最后一行($代表最后一行)操作,包括第10 /oldboy/{sed-commands...} 对匹配oldboy最后一行操作 /oldboy/,10{sed-commands} 对匹配oldboy到第10操作,注意:如果前10没有匹配到oldboy...'2c 106,dandan,CSO' person.txt #替换第2内容 文本替换 s:单独使用,将每一行第一处匹配字符串进行替换 g:每一行进行全部替换 -i:修改文件内容

3.5K41

文本_bash笔记4

,只能是单字符,不好用(无法应对多空格情况,只适用于单字符分隔内容) 例如切出ps结果中PIDCMD列: # awk完美解决问题 ps | awk '{print $1,$4}' # cut不好用...{ command } END{ print "end" }' file BEGIN、END模式块都是可选,先执行BEGIN块,然后从输入内容中读取一行,依次执行各个模式块,直到所有内容读取完毕,然后执行...:当前行文本内容 $123…:当前行第n个字段文本内容 所以有更简单统计行数方式: echo $'1 2\n3 4' | awk 'END{print NR}' 每读一行更新NR,执行到END块时就是总行数...y z=$z 以键值对方式紧跟在语句块后面,作为命令行参数传入 getline 一般用来读取下一行,用法如下: # 输出第一行 echo $'1 2\n3 4' | awk 'BEGIN{getline...line; print line}' # 跳过第一行(把第一行total xxx丢弃了) ls -l | awk 'BEGIN{getline} {print $0}' 不带参数getline会更新

80630

shell脚本实例

cat hello | awk '{print length}' 打印每一行字符长度(算之间空格)  #(expr length "$hello")  注意:hello是一个字符串变量  awk...*//g" ntp.conf     将配置文件中#开头所有用空格代替(也可以实现上述功能)  但是上述两个都有弊端,就是输出有很多空格  sed+awk实现过滤空行注释;  #sed "s/...表示$最后三个连续字符   \1\3     表示打印第一第三个域 注意:一般特殊字符可以采用"[ ]"进行转义。... # cat /etc/passwd | awk '$1 ~/bash$/ {getline;print $1;}'     打印行尾bash一行最后bash结尾 bin:x:1:1:bin...}{pNR=NR;p0=$0}' /etc/passwd  第一个命令在文件中查找模式串,当处理文件中一行内容时,分别在变量p0pNR中存储匹配之前一行该行记录数(awk内部变量NR表示当前输入行中记录数

3.2K60

Shell四剑客实操案例

,它可对文本文件标准输入进行编辑,标准输入可以来自键盘输入、文本重定向、字符串、变量,甚至来自于管道文本,与VIM编辑器类似,它一次处理一行内容,Sed可以编辑一个或多个文件,简化对文件反复操作、...打印jfedu.txt文本中第一行最后一行: sed -n ‘1p;$p’ jfedu.txt 删除jfedu.txt第一行至第三、删除匹配行至最后一行: sed ‘1,3d’ jfedu.txtsed...AWK基本原理是逐行处理文件中数据,查找与命令行中所给定内容相匹配模式,如果发现匹配内容,则进行下一个编程步骤,如果找不到匹配内容,则 继续处理下一行。...其语法参数格式为,AWK常用参数、变量、函数详解如下: awk ‘pattern + {action}’ file AWK基本语法参数详解: 单引号’ ‘是为了shell命令区分开; 大括号{ }表示一个命令分组...; pattern是一个过滤器,表示匹配pattern条件才进行Action处理; action是处理动作,常见动作为Print; 使用#作为注释,patternaction可以只有其一,但不能两者都没有

2.1K21

Linux三剑客(grep、sed、awk

4、查找以n结尾 三、sed sed是一种流编辑器,它一次处理一行内容。...,$:最后一行 /pattern/:被此处模式所能够匹配到一行 地址范围: #,# #,+# /pat1/,/pat2/ `#,/pat1/ ~:步进 1~2 奇数 2~2 偶数 编辑命令...-v var=value 自定义变量 分割符、域记录 awk执行时,由分隔符分隔字段(域)标记1,1,2..n称为域标识,n称为域标识,0为所有域。...注意:以上都是内置变量,在引用时不需要前面加$,每新建一个变量,都需要加个-v,与变量名之间有无空格都可以,变量可以在引用之后再声明,但那一行输出会输出空行。...if-true-expression:if-false-expression PATTERN:根据pattern条件,过滤匹配,再做处理 如果未指定:空模式,匹配每一行 /regular expression

1.4K10

性能工具之linux三剑客awk、grep、sed详解

从文件第一行开始,grep 将一行复制到 buffer 中,将其与搜索字符串进行比较,如果比较通过,则将该行打印到屏幕上。grep将重复这个过程,直到文件搜索所有。...在 awk 中,第一个字段称为 $1,第二个字段称为 $2,等等,全部称为 $0。...字段分隔符由 awk 内部变量 FS 设置,因此如果您设置 FS= ": "则它将根据 ':' 位置划分一行,这对于 /etc/passwd 之类文件很有用,其他有用内部变量是 NR,即当前记录号...注意,由于文件行数是4,不能被3整除,所以最后一个命令提前完成,所以最后 “print $0” 命令打印第4,你可以看到我们也打印了,使用 NR 变量输出行号。...machine 然后只打印出(-n)regexp 给定给定范围内那些

4K31

通过两个简单教程来提高你 awk 技能

awk 程序结构 awk 脚本是由 {}(大括号)包围功能块组成,其中有两个特殊功能块,BEGIN END,它们在处理第一行输入流之前最后一行处理之后执行。...默认情况下是一个新(n)。 NF( 字段数(number of fields))。当 awk 解析一行时,这个变量被设置为被解析出字段数。 $0: 当前记录。...(跳过第一行),然后把结果写到一个叫 acceptanceN.txt 文件中,每解析一行就递增文件名中 N。...把 awk 程序写在一个叫 mail_merge.awk 文件中。在 awk 脚本中语句用 ; 分隔。第一个任务是设置字段分隔符变量其他几个脚本需要变量。...你还需要读取并丢弃 CSV 中第一行,否则会创建一个以 Dear firstname 开头文件。要做到这一点,请使用特殊函数 getline,并在读取后将记录计数器重置为 0。

1.5K20

AWK处理日志入门

cat access.log | awk '{print $1}' 2.语句定义 可以快速用单引号’ ’,把所有语句写成一行。 也可以用-f 指定文件,文件里可以任意换行,增加可读性重用性。...所有执行语句用{}括起来,{}外面是一些高级东西比如过滤条件,见后。 3. 列引用 $0代表整行所有数据,$1代表第一列(终于不是程序员数数从0开始了)。...NF是个代表总列数系统变量,所以$NF代表最后一列,还支持$(NF-1)来表示倒数第二列。 还支持列之间运算,如$NF-$(NF-1)是最后两列值相减。...过滤 1....找出超时数据集中发生时间 第一段找出超时记录,第二段过滤掉时间戳里微秒,然后按秒来合并,并统计该秒超时次数。

2.5K40

awk note

处理流程 当使用 awk 命令处理一个或者多个文件时,它会依次读取文件一行内容,然后对其进行处理,awk 命令默认从 stdio 标准输入获取文件内容,awk 使用一对单引号来表示一些可执行脚本代码...xxx.data 内置变量 变量 含义 $0 行内容 $1 第一列字段 NF 当前行有多少个字段 $NF 最后一个字段 NR 当前处理是第几行 FILENAME 当前文件名 FS 字段分隔符,默认是空格制表符...RS 分隔符,用于分割每一行,默认是换行符。 OFS 输出字段分隔符,用于打印时分隔字段,默认为空格。 ORS 输出记录分隔符,用于打印时分隔记录,默认为换行符。...| sort -rn | head 267 ll 122 vim 118 cd 54 awk 34 man 28 g++ 23 rm 21 cat 16 mkdir 13 gcc 过滤文件中重复 awk...x[$0]++' 假设有一个文本,每一行都是一个 int 数值,想要计算这个文件每一行 awk '{s+=$1} ENG {printf "%.0f", s}' /path/to/file

74310

使用awk正则表达式过滤文件中文本或字符串

为了过滤文本,必须使用文本过滤工具,例如 awk 你可以想到awk作为自己编程语言。但是对于本教程使用范围awk,我们将把它作为一个简单命令行过滤工具来介绍。...它工作原理是读取文件中给定,制作该行副本,然后在该行上执行脚本。这在文件中所有上重复。...所述script形式是/pattern/ action其中pattern 是一个正则表达式,并且 action 是 awk一行中找到给定模式时会做事情。...[ character(s) ] 一起使用 以 set 为例[al1],这里 awk 将匹配文件中包含字符a或l或1在一行所有字符串/etc/hosts. # awk '/[al1]/{print...在下面的示例中,第一个命令打印出文件中所有,第二个命令不打印任何内容,因为我想匹配具有 $25.00,但没有使用转义字符。 第三个命令是正确,因为已使用转义字符读取 $ 照原样。

2.2K10

awk 使用教程 - 通读篇(30分钟入门)

; 从文件内容中读取一行,注意awk是以行为单位处理,每读取一行使用 pattern{commands} 循环处理 可以理解成一个for循环,这也是最重要部分; 最后执行 END{ commands...第一个例子,获得/etc/passwd文件种每行地1个第7个数据,以逗号分隔,并再第一行最后一行打印一串文字。...NR>1 && $9>0 这种写法c语言没有两样,只是少了判断 if 而已,每读到一行时都执行这个判断条件来确定是否过滤;下面转换成高级语言代码。...$2~/york/, 前面有说过 $0 代表整个域,所以 $0~/york/ /york/ 是等价了,说这个原因就是当我们需要 针对一行做正则过滤时候可以这样写 $0!...awk 'NR==1 || $0~/k/ {printf "%-8s %-8s %-8s %-18s\n",$1,$2,$9,$12}' top.txt # 过滤一行中出现york字符 awk

17.7K224

Linux 三剑客之awk

目录 Linux 三剑客之awk 简介 应用场景 awk执行流程图 awk生命周期 awk内置(预定义)变量 与列描述 取 取列 awk函数 条件分类 awk正则详细: 普通正则awk正则区别...、sedawk都是读一行处理一行,直至处理完成 # 生命周期如下: 接收一行作为输入 把刚刚读入进来得到文本进行分解 使用处理规则处理文本 输入一行,赋值给$0,直至处理完成($0代表当前行内容...) 把处理完成之后所有的数据交给END{}来再次处理 awk内置(预定义)变量 内置变量符号 功能描述 $0 代表当前行 $n 代表第n列 NF 记录当前行字段数(当前行列数),$NF表示最后一列...localhost ~]# cat a.sh hammerze hanswang jianiubi guangtou meimei zhengyu xuegongzi 案例1:取出/etc/passwd文件中第一最后一列...用户名:adm 解释器:/sbin/nologin 5 用户名:lp 解释器:/sbin/nologin 案例3:将/etc/passwd文件最后一列第一列互换位置

62410

提升awk技能两个教程【译】

有两个特殊函数块,BEGIN END,BEGIN表示在处理第一行输入流之前执行,而END表示在最后一行处理完成之后执行。...,字段数量): 当awk解析一行记录时,NF代表已解析字段数量 $0: 当前记录() 1, 2, NR (记录行数): 截至当前awk脚本已解析记录行数 除此之外,还有很多其他影响awk行为变量...(跳过proposals.csv第一行),然后把结果写入名为acceptanceN.txt文件中,其中N随着你解析每一行递增。...写出awk程序到mail_merge.awkawk脚本中语句通过 ;分隔。第一个任务是设置脚本所需分割变量及其他变量。...你也需要读取并丢弃proposals.csv第一行,否则会创建出一个以Dear firstname开头文件。为了做到这点,需要使用特定函数getline并在读取之后,把记录计数器重置为0。

4.7K10
领券