shell脚本,awk里面的BEGIN讲解。

解释:

BEGIN{}这个特殊的pattern最常用的就是 变量赋值。 BEGIN这个pattern就是文件没开始读的时候 执行

awk ‘BEGIN{FS=":";OFS="-"}{NF+=0}1‘ , 对应处理是 1:2:3  ---------> 1-2-3

读取输入分隔符,换成输出分隔符 , 但是,awk有个问题,你要是没有对字段进行操作,它是不会改变输出分隔符的,

NF+=0,这个赋值屁用没有,

NF值也没变 。

但是,这个对字段进行了操作 。所以会使OFS生效 。

NF是存在的,NF是字段。

总结就是一句话:

设置OFS, 必须进行个字段操作。

时间: 2024-10-29 10:48:47

shell脚本,awk里面的BEGIN讲解。的相关文章

shell脚本-awk

一.awk工作原理 二.awk的用法 awk [option] ... 'program' FILE ...     1.program语句必须使用单引号!    2.多条program语句使用用大括号包含起来,可以并列,可以嵌套三.awk的常用参数 -F   #指定分隔符 示例:awk -F: '{print $1}' /etc/passwd     #输出/etc/passwd/文件中以:为分隔符的第一列 -v    #因为awk是一种语言编译器,能自己定义变量,同时也有自己的内置变量(与s

shell 脚本awk的高级应用之

需求: 文本中第一列字符相等时,第二列相加 ,最后输出字符和最后的和(为了方便最后核对,都给了1) 文本如下: cat test.log abc 1 aaa 1 bbb 1 ddd 1 sss 1 iii 1 abc 1 sss 1 ddd 1 ddd 1 ddd 1 ddd 1 bbb 1 bbb 1 bbb 1 bbb 1 bbb 1 思路1: awk把第一列取出,然后排序sort,去重uniq,赋值给变量x,然后遍历x,从文本中grep,然后awk截取第二列并相加,这个思路需要多次awk,

shell脚本中常用的命令

date +%Y%m%d%H%M%S -----打印年月日时分秒 echo -e "\033[32m color this word \033[0m" ----输出时添加颜色,32m是绿色,31m是红色 find / -name *.log -type f -size -1M -mtime -30 -perm 755 ----查找到小于1M的30天内修改了的 权限为755的log文件 ll | awk '{print $9}'|grep -v '^$'; -----打印第9列,去除空格

Shell脚本实现SSH免密登录及批量配置管理

本节索引 场景分析 ssh免密登录 pssh工具批量管理 SHELL自动化脚本 本篇总结 场景分析 作为一个运维工程师,不是每个人工作的环境都想阿里.腾讯那样,动不动就上亿的PV量,上万台服务器.我们通常还是工作在,几十台上百台服务器这样的环境,而使用ansible或者puppet这样的自动化运维工具则显得大材小用,并且最终的效果可能还不如几个小工具达到的效果好.像ssh免密登录在配合pssh这样的推送工具,在配合自动化配置脚本,可以说是即方便也使用.这一节将详细带大家以shell脚本的形式实现

Shell、Awk 中自动隐式类型转换的“坑”

1.问题: 在林林总总的编程语言里,弱类型的语言着实不少,一方面这种"动态类型"用起来很方便,而另一方面则"坑"你没商量~ 常见的 SQL.Shell.Awk 都会遇到各种暗藏的"隐式类型转换",下面就列举一些 shell.awk 里的自动隐式类型转换 case,防止掉坑. 注意 shell.awk 的变量为空 字符串.变量为空 未定义.初始值的隐式转换问题: # shell 下的字典排序比较 [email protected] 10:59:23

shell脚本(正则表达+sed+awk)

一. 正则表达式:   正则表达式(或称Regular Expression,简称RE)就是由普通字符(例如字符 a 到 z)以及特殊字符(称为元字符)组成的文字模式. 该模式描述在查找文字主体时待匹配的一个或多个字符串. 正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配.简单的说,正则表示式就是处理字符串的方法,它是以行为单位来进行字符串的处理行为, 正则表示式通过一些特殊符号的辅助,可以让使用者轻易的达到搜寻/删除/取代某特定字符串的处理程序.vim.grep.find.awk

sed && awk工具 及一些经常使用的shell脚本

(一)sed sed是一个精简的.非交互式的流式编辑器,它在命令行中输入编辑命令和指定文件名称.然后在屏幕上查看输出. 逐行读取文件内容存储在暂时缓冲区中,称为"模式空间"(pattern space).接着用sed命令处理缓冲区的内容,处理完毕后,把缓冲区的内容送往屏幕.接着处理下一行,这样不断反复,直到文件末尾.原文件爱你的内容并没有改变. sed '4,$d' test.in # 删除4~最后一行 sed '3q' test.in # 读到指定行之后退出 sed 's/publi

如何在linux Shell脚本里面把一个数组传递到awk内部进行处理

前段时间和几位同事讨论过一个问题:Shell脚本里面怎样把一个数组传递到awk内部进行处理? 当时没有找到方法.前两天在QQ群里讨论awk的时候,无意间又聊起这个话题.机缘巧合之下找到一个思路,特此分享. 测试环境: [root]# head -1 /etc/redhat-release Red Hat Enterprise Linux Server release 6.5 (Santiago) [root]# awk --version | head -1 GNU Awk 3.1.7 众所周知

sed && awk工具 及一些常用的shell脚本

(一)sed sed是一个精简的.非交互式的流式编辑器,它在命令行中输入编辑命令和指定文件名,然后在屏幕上查看输出. 逐行读取文件内容存储在临时缓冲区中,称为"模式空间"(pattern space),接着用sed命令处理缓冲区的内容,处理完成后,把缓冲区的内容送往屏幕.接着处理下一行,这样不断重复,直到文件末尾.原文件爱你的内容并没有改变. sed '4,$d' test.in # 删除4~最后一行 sed '3q' test.in # 读到指定行之后退出 sed 's/public