Linux三剑客之awk命令详解

Linux三剑客之awk命令详解

1、概述

Linux三剑客:grep、sed、awk。grep主打查找功能,sed主要是编辑行,awk主要是分割列处理。本篇文章我们详细介绍awk命令。

awk其名称得自于它的创始人 Alfred Aho 、Peter Weinberger 和 Brian Kernighan 姓氏的首个字母。awk是一种编程语言,用于在linux/unix下对文本和数据进行处理。数据可以来自标准输入(stdin)、一个或多个文件,或其它命令的输出。它支持用户自定义函数和动态正则表达式等先进功能,是linux/unix下的一个强大编程工具。它在命令行中使用,但更多是作为脚本来使用。awk有很多内建的功能,比如数组、函数等,这是它和C语言的相同之处,灵活性是awk最大的优势。

awk是以文件的一行为处理单位的。awk每接收文件的一行,然后执行相应的命令,来处理文本。

Linux命令查询工具推荐 里面说的很详细:

www.zeeklog.com - Linux三剑客之awk命令详解

2、语法

awk [选项] '执行脚本' var=value 文件列表多个以空格分隔 awk [选项] -f 脚本文件 var=value 文件列表多个以空格分隔

基本使用

[root@liuchao ~]# echo seg1:seg2:seg3:seg4:seg5 | awk -F':' '{print $2$3}' seg2seg3 [root@liuchao ~]#

图解:

www.zeeklog.com - Linux三剑客之awk命令详解

多分隔符实例:

从”ab,cd:ef“字符串中拆分出 ”ab ef“ ,这里以”,“和":"为分隔符拆分

[root@liuchao ~]# echo ab,cd:ef | awk -F'[,:]+' '{print $1" "$3}' ab ef [root@liuchao ~]#

3、BEGIN 和 END 模块

咱们知道一个文件有多行数据,执行一个awk命令时,awk会对没一样数据执行相同的命令。但是有时候希望执行像模板模式一样,在整个文件执行awk命令之前和之后做一些事情。对于这种需求,我们就需要用到BEGIN和END模块。
awk在执行输入文件执前会执行BEGIN块,在执行完输入文件所有行之后会执行END块。
BEGIN常用场景:初始化字段分隔符变量、打印页眉等。
END常用场景:执行最终计算或者打印最终摘要信息等。

实例一、统计某个文件夹下的文件占用的字节数

[root@liuchao ~]# ll 总用量 4 drwxr-xr-x 2 root root 23 3月 31 18:04 awk_test -rw-r--r-- 1 root root 84 11月 7 2019 catalina.out drwxr-xr-x 6 root root 64 3月 29 16:38 logs drwxr-xr-x 4 root root 34 12月 16 2019 nacos [root@liuchao ~]# [root@liuchao ~]# ll | awk 'BEGIN {size=0;} {size=size+$5;} END{print "当前文件夹总大小是:"size}' 当前文件夹总大小是:205 [root@liuchao ~]#

实例二、统计某个文件夹下的文件占用的大小已M为单位

[root@liuchao ~]# ll | awk 'BEGIN {size=0;} {size=size+$5;} END{print "当前文件夹总大小是:"size/1024/1024"M"}' 当前文件夹总大小是:0.000195503M [root@liuchao ~]#

4、运算符

www.zeeklog.com - Linux三剑客之awk命令详解
#赋值运算符:a+5 [root@liuchao ~]# awk 'BEGIN{a=5;a+=5;print a}' 10 #逻辑运算符:a>2&&b>1 运算结果 和 a=1||b>1 运算结果 [root@liuchao ~]# awk 'BEGIN{a=1;b=2;print (a>2&&b>1,a=1||b>1)}' 0 1 # 正则运算符 [root@liuchao ~]# awk 'BEGIN{a="100testaa";if(a~/100/) {print "ok"}}' ok [root@liuchao ~]# echo|awk 'BEGIN{a="100testaaa"}a~/test/{print "ok"}' ok [root@liuchao ~]# # 关系运算符 [root@liuchao ~]# awk 'BEGIN{a=5;if(a>=6){print "true"}}' [root@liuchao ~]# awk 'BEGIN{a=5;if(a>=5){print "true"}}' true # 算数运算符 说明,所有用作算术运算符进行操作,操作数自动转为数值,所有非数值都变为0。 [root@liuchao ~]# awk 'BEGIN{a="b";b=3;print ++a,++b}' 1 4 [root@liuchao ~]# # 三目运算符 [root@liuchao ~]# awk 'BEGIN{a="3";print a=="3"?"true":"false"}' true [root@liuchao ~]#

5、常用内置变量

www.zeeklog.com - Linux三剑客之awk命令详解

5.1、字符串分隔符"FS"

# 测试文件内容 [root@liuchao awk_test]# cat test1.txt test ab ac ad testb fd bd gg testc ii jj www ab testd ab ff bb dd # 在BEGIN 模块中设置 分隔符 ' ' , ”+“ 标识多个 [root@liuchao awk_test]# awk 'BEGIN{FS="[ ]+"}{print $2}' test1.txt ab fd ii ab # 在BEGIN 模块中设置 分隔符 ' ' , ”+“ 标识多个 [root@liuchao awk_test]# awk 'BEGIN{FS=" +"}{print $2}' test1.txt ab fd ii ab # 使用-F 选项设置分隔符 [root@liuchao awk_test]# awk -F' +' '{print $2}' test1.txt ab fd ii ab [root@liuchao awk_test]#

5.2、字符串数量

# 测试文件内容 [root@liuchao awk_test]# cat test1.txt test ab ac ad testb fd bd gg testc ii jj www ab testd ab ff bb dd # 一个或者多个空格分隔后,分隔数量等于5个 打印 当前行记录 [root@liuchao awk_test]# awk -F ' +' 'NF==5{print $0}' test1.txt testc ii jj www ab testd ab ff bb dd [root@liuchao awk_test]#

Read more

万方AIGC检测通不过?这几款降AI工具实测有效

万方AIGC检测通不过?这几款降AI工具实测有效

万方AIGC检测通不过?这几款降AI工具实测有效 TL;DR:万方AIGC检测算法与知网、维普不同,需要选择支持万方平台的降AI工具。推荐嘎嘎降AI(多平台适配,4.8元/千字)和率降(稳定可靠,4.2元/千字)。 万方检测的特殊性 很多同学以为降AI工具都是通用的,用一个就能搞定所有平台。但实际上,知网、维普、万方三大平台的AIGC检测算法各有不同。我之前用一款只针对知网优化的工具处理论文,知网检测降到了8%,但万方一测还有32%,差点没过学校的检测线。 万方的AIGC检测更侧重于文本特征分析,对某些AI生成模式的识别与知网有差异。所以如果你学校用的是万方检测,一定要确认工具是否支持万方平台,别只看知网的效果数据。 支持万方的降AI工具对比 工具价格(千字)万方效果达标率特色链接嘎嘎降AI4.8元60%→8%99.26%多平台适配官网率降4.2元65%→12%97%稳定可靠官网去AIGC3.5元70%→18%96%通用型官网比话降AI8元知网专精99%

Code Llama 7B终极指南:快速上手免费AI编程助手

Code Llama 7B终极指南:快速上手免费AI编程助手 【免费下载链接】CodeLlama-7b-hf 项目地址: https://ai.gitcode.com/hf_mirrors/ai-gitcode/CodeLlama-7b-hf Code Llama 7B是由Meta开发的一款革命性的代码生成AI模型,专门为提升开发效率而生。这个拥有70亿参数的智能助手能够理解代码逻辑、生成完整函数、补全代码片段,让编程工作变得前所未有的轻松高效!🚀 💡 核心功能亮点:为什么选择Code Llama 7B? 智能代码生成能力 ✨ * 代码补全:根据已有代码上下文智能生成后续代码 * 函数填充:在函数中间插入缺失的代码逻辑 * 多语言支持:适用于多种编程语言的代码理解和生成 技术优势 ⚡ * 基于优化的Transformer架构,性能卓越 * 支持16384个token的上下文长度 * 专为代码合成和理解任务设计 🚀 快速上手指南:5分钟完成安装 环境准备 确保你的系统满足以下基本要求: * Python 3.8+ * 至少16GB内存 *

豆包Seedream 4.0多图融合实力派:田园犬+三花猫多场景创作,AI绘画新时代来了!

豆包Seedream 4.0多图融合实力派:田园犬+三花猫多场景创作,AI绘画新时代来了!

豆包Seedream 4.0多图融合实力派:田园犬+三花猫多场景创作,AI绘画新时代来了! 🌟 Hello,我是摘星! 🌈 在彩虹般绚烂的技术栈中,我是那个永不停歇的色彩收集者。 🦋 每一个优化都是我培育的花朵,每一个特性都是我放飞的蝴蝶。 🔬 每一次代码审查都是我的显微镜观察,每一次重构都是我的化学实验。 🎵 在编程的交响乐中,我既是指挥家也是演奏者。让我们一起,在技术的音乐厅里,奏响属于程序员的华美乐章。 摘要 作为一名长期关注AI技术发展的开发者,我见证了从GAN到DALL-E,再到Stable Diffusion的图像生成技术演进历程。而今天,当我深入体验字节跳动最新发布的豆包Seedream 4.0时,我被这项技术的突破性表现深深震撼了。这不仅仅是一次简单的版本迭代,而是AI绘画领域的一次革命性跃进。 通过我使用中华田园犬和三花猫素材进行的深度测评,Seedream 4.0展现出了前所未有的多图融合能力和主体一致性保持水平。从真实场景的动物追逐图,到充满想象力的卡通探险绘本,再到创意十足的布偶挂件设计,每一个生成结果都让我感受到了AI创作的无限可能。这款模

工具篇-如何在Github Copilot中使用MCP服务?

工具篇-如何在Github Copilot中使用MCP服务?

Model Context Protocol (MCP) 是由 Anthropic 公司于 2024 年 11 月推出的一种开放协议标准,目的在于标准化 LLM 与外部数据源、工具及服务之间的交互方式。MCP 被广泛类比为“AI 领域的 USB-C 接口”。 一、vscode的安装 下载vscodeVisual Studio Code - Code Editing. Redefined安装完成打开 选择copilot,这个是AI助手,帮助你编程  然后注册登录,可以使用GitHub的账号登录,很多工具都可以通过GitHub帐号登录,所以注册一个GitHub帐号是很有必要的。 二、使用MCP 2.1 准备好MCP 先按这篇文章准备好高德地图的MCP:工具篇-Cherry Studio之MCP使用-ZEEKLOG博客 2.2 在Github Copilot中配置 MCP服务