首页
学习
活动
专区
工具
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”表示当前行的下一行的行尾。

10.5K40

正则复习2

笔记内容: l awk 中使用外部shell变量 l awk 合并一个文件 l 把一个文件多行连接成一行 l awk中gsub函数的使用 l awk 截取指定多个域为一行 l 过滤两个或多个关键词 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.9K10

    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

    3.1K20

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

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

    1.7K31

    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.6K41

    文本_bash笔记4

    ,只能是单字符,不好用(无法应对多空格的情况,只适用于单字符分隔的内容) 例如切出ps结果中的PID和CMD列: # 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会更新

    82730

    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; 使用#作为注释,pattern和action可以只有其一,但不能两者都没有

    2.1K21

    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  第一个命令在文件中查找模式串,当处理文件中的每一行内容时,分别在变量p0和pNR中存储匹配行之前的一行和该行的记录数(awk的内部变量NR表示当前输入行中的记录数

    3.2K60

    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

    2.1K11

    性能工具之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 给定的给定范围内的那些行。

    4.2K31

    通过两个简单的教程来提高你的 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

    76410

    使用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.3K10

    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

    18.3K224

    Linux 三剑客之awk

    目录 Linux 三剑客之awk 简介 应用场景 awk执行流程图 awk生命周期 awk内置(预定义)变量 行与列描述 取行 取列 awk中的函数 条件的分类 awk正则详细: 普通正则和awk正则区别...、sed和awk都是读一行处理一行,直至处理完成 # 生命周期如下: 接收一行作为输入 把刚刚读入进来得到文本进行分解 使用处理规则处理文本 输入一行,赋值给$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文件的最后一列和第一列互换位置

    67410

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

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

    4.7K10
    领券