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

AWK -了解使用FILENAME和OFS获得的不同输出

AWK是一种文本处理工具,它可以用于从结构化文本文件中提取和处理数据。在AWK中,FILENAME和OFS是两个重要的内置变量,它们可以用于获得不同的输出结果。

  1. FILENAME:FILENAME是一个内置变量,用于获取当前正在处理的文件的名称。它可以在AWK脚本中直接使用,无需声明或初始化。通过使用FILENAME,我们可以根据当前处理的文件名执行特定的操作或逻辑。
  2. OFS:OFS是另一个内置变量,代表输出字段分隔符(Output Field Separator)。它定义了输出结果中字段之间的分隔符,默认为一个空格。通过修改OFS的值,我们可以自定义字段之间的分隔符,以满足特定的输出需求。

使用FILENAME和OFS可以获得不同的输出结果,具体如下:

  • 使用FILENAME: 当我们需要根据不同的文件名执行不同的操作时,可以使用FILENAME。例如,我们有一个包含多个日志文件的目录,我们想要提取每个日志文件中特定字段的数据并进行处理。我们可以在AWK脚本中使用FILENAME来判断当前处理的文件名,并根据文件名执行相应的逻辑。
  • 使用OFS: 当我们需要自定义输出结果中字段之间的分隔符时,可以使用OFS。默认情况下,AWK使用空格作为字段分隔符。但是,有时我们可能需要使用其他字符,如逗号、制表符等。通过修改OFS的值,我们可以指定不同的字段分隔符。例如,如果我们想要以逗号分隔字段,可以将OFS设置为逗号,这样输出结果中的字段将以逗号分隔。

总结: FILENAME和OFS是AWK中的两个重要内置变量,它们可以帮助我们获得不同的输出结果。FILENAME用于获取当前处理的文件名,可以根据文件名执行特定的操作。OFS用于定义输出结果中字段之间的分隔符,默认为一个空格,但可以根据需求进行自定义。通过灵活使用FILENAME和OFS,我们可以更好地处理和提取文本数据。

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

相关·内容

linux awk 内置变量实例

NR 已经读出记录数,就是行号,从1开始 RS 输入记录分隔符,默认为换行符 OFS 输出字段分隔符,默是空格 ORS 输出记录分隔符,默认为换行符 ARGC 命令行参数个数 ARGV 命令行参数数组...获得输入参数内容是一个数组 7) 获得传入文件名(FILENAMEawk 'BEGIN{FS=":";}/^r/ {print FILENAME, "\t", $0}' /etc/passwd..., $0-$N,NF 不能使用在BEGIN中,BEGIN中不能获得任何与文件记录操作变量 8) 获得linux环境变量(ENVIRON) awk 'BEGIN{print ENVIRON["PATH"...中两个特别的表达式,BEGINEND 这两者都可用于pattern中,提供BEGINEND作用是给程序赋予 初始状态  程序结束 之后执行一些扫尾工作。...a) 任何在BEGIN之后列出操作(在{}内),将在awk开始扫描输入之前执行 b) 任何在END之后列出操作,将在扫描完全部输入之后执行 因此,通常使用BEGIN来显示变量初始化变量,使用END

2.8K20

Linux-awk及内置变量

就是有多少列 NR 已经读出记录数,就是行号,从1开始 RS 输入记录他隔符默 认为换行符 OFS 输出字段分隔符 默认也是空格 ORS 输出记录分隔符,默认为换行符 ARGC 命令行参数个数 ARGV...设置输出字段分隔符(OFS使用方法) 指定分隔符为^^ [root@entel2 ~]# awk 'BEGIN{FS=":";OFS="^^"}/^root/{print FNR,$1,$NF}' /...' /etc/passwd 1 root /bin/bash OFS设置默认字段分隔符 ---- 设置输出行记录分隔符(ORS使用方法) cat /etc/passwd|head -n 5|awk 'BEGIN...---- 获得传入文件名(FILENAME使用) [root@entel2 ~]# awk 'BEGIN{FS=":";print FILENAME}/^root/{print FILENAME}'.../etc/passwd /etc/passwd 可见 第一行并没有打印出 /etc/passwd FILENAME,$0-$N,NF 不能使用在BEGIN中,BEGIN中不能获得任何与文件记录操作变量

2K41
  • Linux | awk 命令「建议收藏」

    awk 命令简介 awk 是一个强大文本分析工具,相对于grep 查找,sed编辑,awk 在其对数据分析并生成报告时,显得非常强大,awk 其实是一门语言,”格式扫描处理语言“,它允许您创建简短程序...,所以 $0 代表是这一行 last -n 5 | awk '{print $0}' # last -n 5 输出相同 -F 使用 这里使用例子是var/log/yum.log、文件中内容...# 如果我们想要得到所有安装更新软件列表 cat yum.log | awk -F: '{print $4,$5}' -F 可以使用任意字符充当分割符号 -v 使用 创建测试文本:awk_test.txt...数字输出格式(默认值是%.6g) OFS 输出字段分隔符,默认值与输入字段分隔符一致。...$ There $ awk 使用正则表达式 使用正则,字符串匹配 # 输出第二列包含 "th",并打印第二列与第四列 awk '$2 ~ /th/ {print $2,$4}' log.txt

    75310

    Linux|了解如何使用 awk 内置变量

    引言 当我们揭开 Awk 功能部分时,我们将介绍 Awk 中内置变量概念。您可以在 Awk使用两种类型变量:用户定义变量内置变量。...) NF :当前输入行中字段数(不要更改变量名称) OFS输出字段分隔符 FS :输入字段分隔符 ORS:输出记录分隔符 RS : 输入记录分隔符 实战 让我们继续说明上面一些 Awk 内置变量使用...: 要读取当前输入文件文件名,可以使用 FILENAME 内置变量,如下所示: awk ' { print FILENAME } ' ~/domains.txt 您将意识到,每个输入行都会打印出文件名...,这是当您使用 FILENAME 内置变量时 Awk 默认行为。...内置变量,如下所示: awk ' BEGIN { FS=“:” ; } { print $1, $4 ; } ' /etc/passwd 要指定输出字段分隔符,请使用 OFS 内置变量,它定义如何使用我们使用字符分隔输出字段

    10210

    Linux awk 命令

    之所以叫AWK是因为其取了三位创始人Alfred Aho,Peter Weinberger, Brian Kernighan Family Name 首字符。...所以gawk行为标准awk完全一样,所有的awk扩展都被忽略。-W copyleft or --copyleft, -W copyright or --copyright 打印简短版权信息。...一元加,减逻辑非^ ***求幂++ --增加或减少,作为前缀或后缀$字段引用in数组成员过滤第一列大于2行$ awk '$1>2' log.txt #命令#输出3 Are you like awkThis's...如果为真,则进行忽略大小写匹配NF一条记录字段数目NR已经读出记录数,就是行号,从1开始OFMT数字输出格式(默认值是%.6g)OFS输出记录分隔符(输出换行符),输出时用指定符号代替换行符...%4s %4s %4s %4s %4s %4s\n",FILENAME,ARGC,FNR,FS,NF,NR,OFS,ORS,RS}' log.txtFILENAME ARGC FNR FS

    4.1K20

    awk编程实战「建议收藏」

    \t awk脚本是由模式操作组成 两者是可选,如果没有pattern,则action应用到全部记录,如果没有action,则输出匹配全部记录 awk {action} filename [sunchengquan...OFS 输出字段分隔符, 默认也是空格 ORS 输出记录分隔符,默认为换行符 FILENAME 当前输入文件名字 统计/etc/passwd:文件名,每行行号,每行列数,对应完整行内容: [...所以它可以在没有任何输入情况下进行测试。它通常用来改变内建变量值,如OFS,RSFS等,以及打印标题。...重定向管道 awk使用shell重定向符进行重定向输出 [sunchengquan 15:12:32 ~/test] $ awk '$1=100 {print $1 > "output_file"...、管道或者当前正在处理文件之外其他输入文件获得输入。

    1.4K30

    Linux之awk命令详解(一)

    行号,当前处理文本行行号 NF 当前行字段个数 FNR 个文件分别计数行号 FILENAME 文件名称 FS 输入字段分隔符 OFS 输出字段分隔符 ARGC以及...ARGV 数组以及命令行参数个数 下面分别对这些变量进行举例说明: FS OFS 输入输出字段分隔符 FS作用: [root@dev01 yeyz_shell]# cat awk_test.txt...下面的例子是OFS使用-作为分隔符,输出文件中内容: [root@dev01 yeyz_shell]# cat awk_test2.txt this is a shell program this....txt | awk -v OFS='-' '{print $2,$3,$4}' is-a-shell is-a-shell is-a-shell is-a-shell NRNF 行数每一行列数...ARGCARGV 其中ARGV是一个数组,数组包含下标,使用下标可以访问数组中文件名称,如下: [root@dev01 yeyz_shell]# awk 'BEGIN{print "aaa"

    9.9K53

    Linux正则匹配详解

    Unixgrep家族包括grep、egrepfgrep。egrepfgrep命令只跟grep有很小不同。...'搜寻字符串' 次数 -i :忽略大小写不同,所以大小写视为相同 -n :顺便输出行号 -v :反向选择,亦即显示出没有 '搜寻字符串' 内容那一行!...RS 输入记录分隔符,默认为换行符 OFS 输出字段分隔符,默认为空格 ORS 输出记录分隔符,默认为换行符 FILENAME 当前输入文件名字 awk运算符合正则匹配 算术运算符 awk算术运算符...~/reg/ 第一个字段不匹配 NR >=2 从第二行开始处理 awk 整则可以比较运算符结合使用,以便处理更复查匹配 awk技巧 awk使用RE为ERE 如果在BEGIN中设置了OFS,只有$0...匹配多个条件: `awk ‘/kobe/ && /james/’, 这会匹配同时有kobejames行 FS默认值是[/t/n]+,OFS默认值为空格,RS,ORS默认值都是换行 exit语句

    11.7K20

    Linux学习 - 常用不太常用实用awk命令

    而且教程摒弃了完美操作,列举出常见错误和解决方式,管道、标准输入输出解惑Linux下多种信息输出方式。 在文件排序FASTA文件操作中简述了awksed使用,作为一个引子。...awk读取单个文件时基本语法格式是awk 'BEGIN{OFS=FS="\t"}{print $0, $1;}' filename。...OFS: 文件输出列分隔符 (output field separtor) FS: 文件输入时列分隔符 (field separtor) BEGIN: 设置初始参数,初始化变量 END: 读完文件后做最终处理...最稳妥方式还是使用awk。...=1{$4=$4"_"NR;print $0}' file 糅合操作 awk中执行系统命令 (注意引号使用) # 系统命令组成字符串,交给system函数运行 awk 'BEGIN{OFS=FS="\

    1.6K100

    五分钟入门文本处理三剑客grep awk sed

    介绍 grep awk sed是Linux下文本处理常用命令,能完成很多神奇操作,今天就分享一下这三个命令最常见用法 grep 使用一般有如下两种形式 第一种形式 grep [option] [...区别联系 grep默认不支持扩展正则表达式,只支持基础正则表达式 使用grep -E 可以支持扩展正则表达式 使用egrep可以支持扩展正则表达式,与grep -E等价 awk 使用一般有如下两种形式...'{print $NF}' show.txt 输出行号 awk '{print NR}' show.txt 1 2 对每个文件行号单独计数(显示show.txt/etc/passwd文件行号,...;ORS="&"}{print $2}' show.txt java&hadoop& 再次指定列分隔符 # OFS输出列分隔符 awk 'BEGIN{RS="--";FS="|";ORS="&";OFS...|hadoop|storm awk '{print FILENAME}' show.txt show.txt show.txt 因为是对行进行处理,所以有几行,输出几次文件名 当然awk还有其他强大操作

    62830

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

    http://ask.apelearn.com/question/1738 合并两个文件 http://ask.apelearn.com/question/945 awkBEGINEND http...内置变量 变量 作用 OFS 与-F有类似的功能,也是用来定义分隔符,但是它是在输出时候定义 NF 表示用分隔符分割后一共有多少段 NR 表示行号 ## OFS用法示例 ## [root@linux...0,a[1]}’ 1.txt 2.txt 说明: awk ‘{print NR,FNR}’ 1.txt 2.txt //首先理解NRFNR不同awk支持同时操作多个文件内容) 当NR==FNR...-E ‘123|abc’ filename // 找出文件(filename)中包含123或者包含abc行 egrep ‘123|abc’ filename //用egrep同样可以实现 awk...a’’‘s"}’ awk ‘BEGIN{print “a"s”}’ 注意:使用print打印单引号时候,需要注意使用双引号引起来,在使用单引号引起。

    2.6K21

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

    它支持用户自定义 函数动态正则表达式等先进功能,是linux/unix下一个强大编程工具。它在命令行中使用,但更多是作为脚本来使用。...因为它作者是三个人,分别是Alfred Aho、Brian Kernighan、Peter Weinberger。gawk是awkGNU版本,它提供了Bell实验室GNU一些扩展。...行,其中输出每行行号,字段4,5,6,并使用制表符分割字段 输出处理结果到文件 ①在命令代码块中直接输出 route -n|awk 'NR!...$1,$2,$3,$4,$5}' OFS='\t' helloworld.sh //输出前5个字段并使用制表符分隔输出 awk -F: '{print NR,$1,$2.../制表符分隔输出多字段 应用4 计算/home目录下,普通文件大小,使用KB作为单位 ls -l|awk 'BEGIN{sum=0} !

    1K30

    awk学习笔记

    (2)、输出分隔符,默认为空格(如上图上例显示结果),接上例,以:为输出分隔符显示输出结果 # awk -v FS=":" -v OFS=":" '{print $1,$7}' /etc...4、特殊模式BEGINEND (1)、BEGIN在读取任何输入之前执行一次语句 # awk 'BEGIN{FS=":";OFS=":"}/root/{print $1,$3,$7...5、空模式 如果不指定模式则匹配文件中所有行 awk重定向 1、输出重定向 awk可以使用shell重定向符重定向输出,同样>代表覆盖式输出,>>...getline从标准输入、管道或者当前正在处理文件之外其他输入文件获得输入。它负责从输入获得下一行内 容,并给NF,NRFNR等内建变量赋值。...要点: (1)、各item之间使用,号隔开,输出时默认以空格分隔 (2)、输出item可以是字符串或数值、当前分隔出来域(字段,如$1)、变量或awk表达式,数值会隐式转换为字符串输出

    1.9K60

    awk工具详解

    使用awk命令过程中,可以使用逻辑操作符” &&”表示”与”、”| |”表示”或”、”!.”表示非” ;还可以进行简单数学运算,如+、一、*、/、%、^分别表示加、减、乘、除、取余乘方。...NF:当前处理字段个数。 NR:当前处理行号(序数) 。 $0:当前处理整行内容。 $n:当前处理行第n个字段(第n列)。 FILENAME:被处理文件名。 RS:行分隔符。...| awk ‘$1%7==0 && $1~/7/’     ##打印200内 被7整除并且 包含7所有数字 其他内置变量用法FS、OFS、NR、FNR、RS、ORS 案例: awk ‘BEGIN{...FS=”:”}{print $1}’ zz   ##打印之前定义字段分隔符为冒号 awk ‘BEGIN{FS=”:”;OFS=”—“}{print $1,$2}’ zz    ##OFS 定义了输出时以什么分隔...$3:$4; {print max}} ‘ /etc/passwd (了解) #($3>$4)?

    3.1K20

    AWK第二课

    一直到读取完毕,最后执行END 2、正则匹配 awk -F: ‘/^root/{print $1}’ /etc/passwd 说明:搜索root开头行打印第一个区域 3、内置变量 ARGC...命令行参数个数 ARGV 命令行参数排列 ENVIRON 支持队列中系统环境变量使用 FILENAME awk浏览文件名 FNR 浏览文件记录数 FS 设置输入域分隔符,等价于命令行 -...F选项 NF 浏览记录个数 NR 已读记录数 OFS 输出域分隔符 ORS 输出记录分隔符 RS 控制记录分隔符 示例: awk -F’:’ ‘{print “filename:”...FILENAME “,line:” NR “,cols:” NF}’ /etc/passwd 4、printf格式化输出 awk -F ‘:’ ‘{printf(“filename:%s,linenumber...:%s,columns:%s,linecontent:%s\n”,FILENAME,NR,NF,$0)}’ /etc/passwd 5、编程 定义变量可以在action块定义,语句使用;分开 awk

    66470

    Linux生产环境上,最常用一套“AWK“技巧

    它智能去切分你数据,不管是空格,还是TAB,大概率是你想要。 对于csv这种文件来说,分隔字符是,。AWK使用-F参数去指定。以下代码打印csv文件中第1第2列。...a' file 6、输出行数 awk 'END{print NR}' file 这些命令,是需要了解awk一些内部变量,接下来我们来介绍。 内置变量 FS 下面的两个命令是等价 。...如果你文件既有用,分隔,也有用:分割,FS甚至可以指定多个分隔符同时起作用。 FS="[,:|]" 其他 OFS 指定输出内容分割符,列数非常多时候,简化操作。...cat -n file awk '{print NR,$0}' file RS 记录分隔标志 ORS 指定记录输出分隔标志 FILENAME 当前处理文件名称,在一次性处理多个文件时非常有用 编程语言特性...End 曾经使用awk编写过复杂日志处理统计程序。虽然比写sed舒畅了很多,但还是备受煎熬。

    87010

    扫码

    添加站长 进交流群

    领取专属 10元无门槛券

    手把手带您无忧上云

    扫码加入开发者社群

    相关资讯

    热门标签

    活动推荐

      运营活动

      活动名称
      广告关闭
      领券