当前位置: 首页 > article >正文

第3.3节:print函数详解

1 第3.3节:print函数详解

print是AWK中最常用的输出函数,它可以将指定的变量、字段或表达式的值输出到标准输出。以下是其详细用法:

1.1 基本语法

print (expr1), (expr2), ..., (exprN)。其中expr1, expr2, ..., exprN是要输出的表达式,可以是字段(如$1$2等)、变量或其他表达式。默认情况下,print会将表达式的结果按空格分隔输出。

示例:

echo "Hello World" | awk '{ print $1, $2 }'

在这个例子中,$1$2分别代表输入文本中的第一个和第二个字段,运行此命令会输出Hello World

::: alert-danger

  • 注意点1
    awk '{ print $1, $2 }'参数$1, $2明明中间的间隔符是",“, 为什么最后输出的HelloWorld中间是空格呢?
    这里的”,“并不是说输出时使用”,"做参数$1, $2之间的间隔, 而是两个参数之间的分隔符,为什么会在两个单词间加空格, 是由变量OFS决定的, 该变量决定了参数之间输出时用什么做分隔,默认是空格。
    如果上面的代码修改成:
echo "Hello World" | awk 'BEGIN {OFS="|" }{ print $1,$2 }'

则输出变成 :

Hello|World

输出时,参数间使用“|”做分隔符。

  • 注意点2
    如果print函数的参数没有“,”进行分隔,则会当成一个整体,不添加分隔符,上述代码修改为:
echo "Hello World" | awk 'BEGIN {OFS="|" }{ print $1$2 }'

输出:

HelloWorld

HelloWorld两个单词间并没有添加分隔符“|”。

  • 注意点3
    如果print函数参数没有使用“,”分隔,也没有紧紧的挨到一起,而是像下面这样使用空格,会是什么情况呢?
echo "Hello World" | awk 'BEGIN {OFS="|" }{ print $1 $2}'

输出:

HelloWorld

很不幸, 两个参数在输出时并没有添加任何分隔符。
:::

1.2 输出字段

  在AWK中,字段是由空格或制表符分隔的文本部分,可以通过$1$2等变量来引用这些字段。如果想输出特定字段,可直接在print函数中指定。

示例
假设存在一个名为file.txt的文件,内容如下:

apple banana cherry
dog cat elephant

执行以下命令:

awk '{print $3, $1}' file.txt

会输出:

cherry apple
elephant dog

1.3 字符串拼接

  虽然print默认会将表达式间用空格分隔,但可以通过在表达式中加入字符串运算符来拼接字符串。

示例:

echo "John 25" | awk '{ print $1 " is " $2 " years old" }'

  运行该命令会输出John is 25 years old。注意,字符串拼接时不需要使用显式的运算符(如+),只需要将字符串和字段或其他字符串直接写在一起,AWK会自动将它们连接。

1.4 输出换行符

  print默认在每次输出后会自动加上一个换行符。如果不希望输出换行符,可以使用ORS(Output Record Separator)来控制。

示例:

echo "apple banana cherry" | awk '{ print $1; print $2; print $3 }'

会输出三行,分别是:

apple
banana
cherry

若想避免换行,可以修改ORS

echo "apple banana cherry" | awk 'BEGIN { ORS=" " } { print $1; print $2; print $3 }'

输出结果为apple banana cherry

1.5 特殊情况辨析

  在AWK中,printprint xprint $0都是输出命令,但含义有所不同。

  • 当使用print时,AWK默认会打印当前记录的整个内容,即打印整行,等同于print $0
    示例:
echo "This is a test" | awk '{print}'

输出结果为This is a test

  • print x中的x代表一个未定义的变量,处理未定义变量时,AWK会默认将其值视为一个空字符串或者数字0
    示例:
echo "test line" | awk '{print xxoo}'

会输出0
注:gawk输出空字符串

  • print $0会打印当前行的所有内容,与print的行为相同。
    示例:
echo "Another test" | awk '{print $0}'

输出结果为Another test

1.6 结合其他功能使用print函数

1.6.1 与BEGIN和END模式结合

  BEGINEND是AWK中的两个特殊模式。BEGIN中的动作在处理输入文件之前执行,END中的动作在处理完所有输入文件后执行,BEGINEND代码块不论待处理的文本有多少行,都只会执行1次

示例:

echo -e "line1\nline2\nline3" | awk 'BEGIN { print "Start" } { print $0 } END { print "End" }'

会先输出Start,然后逐行打印输入内容,最后输出End,输出结果如下:

Start
line1
line2
line3
End

1.6.2 与条件判断结合

  可以在awk的条件判断中使用print函数。

示例:
假设存在一个名为data.txt的文件,内容如下:

user1 15
user2 8
user3 20

执行以下命令:

awk '{ if ($2 > 10) { print $1, $2 } }' data.txt

会输出:

user1 15
user3 20

1.7 print函数输出重定向

  print函数的输出可以被重定向到文件中。

示例:

echo -e "apple\nbanana\ncherry" | awk '{print $0}' > fruits.txt

这会将输入内容逐行输出到fruits.txt文件中。如果想追加输出而不是覆盖,可以使用>>

echo "date" | awk '{print $0}' >> fruits.txt

  print函数是AWK中非常基础且重要的输出函数,掌握它的各种用法可以帮助用户灵活地处理和输出文本数据。在实际应用中,可根据具体需求结合AWK的其他功能来充分发挥print函数的作用。


作者声明:本文用于记录和分享作者的学习心得,可能有部分文字或示例来自AI平台,如:豆包、DeepSeek(硅基流动)(注册链接)等,由于本人水平有限,难免存在表达错误,欢迎留言交流和指教!
Copyright © 2022~2025 All rights reserved.

相关文章:

第3.3节:print函数详解

1 第3.3节:print函数详解 print是AWK中最常用的输出函数,它可以将指定的变量、字段或表达式的值输出到标准输出。以下是其详细用法: 1.1 基本语法 print (expr1), (expr2), ..., (exprN)。其中expr1, expr2, ..., exprN是要输出的表达式&a…...

视频分析设备平台EasyCVR安防视频管理系统,打造电石生产智能视频监控新体系

一、背景介绍 电石生产中的出炉工序是整个生产流程中最为繁重且危险的环节。在开堵炉眼的过程中,电石极易发生飞溅现象,尤其在进行吹氧操作时,人员灼伤的风险极高。鉴于此,该工序正逐步由传统的人工操作模式向智能化方向转变。然…...

C语言中的.操作符与->操作符的区别

.操作符->操作符访问方式成员访问操作符(类,结构体的成员)指针来访问对象的成员语法形式对象.成员指针->成员举例 person是结构体的对象,里面有一个age是成员变量 person.age 例如,如果有一个指向 person 结构体…...

从 PyTorch 到 ONNX:深度学习模型导出全解析

在模型训练完毕后,我们通常希望将其部署到推理平台中,比如 TensorRT、ONNX Runtime 或移动端框架。而 ONNX(Open Neural Network Exchange)正是 PyTorch 与这些平台之间的桥梁。 本文将以一个图像去噪模型 SimpleDenoiser 为例&a…...

Android 应用添加Tile到SystemUI QuickSettings

安卓源码里有谷歌给的关于 Tile 的说明。 frameworks/base/packages/SystemUI/docs/qs-tiles.md SystemUI QuickSettings 简称QS,指的是 下拉菜单里的区域。区域里的一个选项就是一个 Tile 。 下图是 frameworks/base/packages/SystemUI/docs/ 里的附图示例&#…...

【MySQL】前缀索引、索引下推、访问方法,自适应哈希索引

最左前缀原则 对于INDEX(name, age)来说最左前缀可以是联合索引的最左N个字段, 也可以是字符串索引的最左M个字符。 SELECT * FROM t WHERE name LIKE 张%其效果和单独创建一个INDEX(name)的效果是一样的若通过调整索引字段的顺序, 可以少维护一个索引树, 那么这个顺序就是需要…...

C++中变量、函数存储、包括虚函数多态实现机制说明

从C语言转到C开发,对于类内变量的存储,类内函数的存储,存在疑惑; 子类如何继承父类的变量的?如果子类和父类变量同名了怎么办?C中,函数有了作用域,类内函数,只能是这个类或对应对…...

Android Studio开发知识:从基础到进阶

引言 Android开发作为移动应用开发的主流方向之一,曾吸引了无数开发者投身其中。然而,随着市场饱和和技术迭代,当前的Android开发就业形势并不乐观,竞争日益激烈。尽管如此,掌握扎实的开发技能仍然是脱颖而出的关键。本…...

数据加载与保存

通用方式‌ SparkSQL提供了通用的数据加载方式,使用spark.read.loa方法,并可通过format指定数据类型(如csv、jdbc、json、orc、parquet、textFile)。 load方法后需传入数据路径(针对csv、jdbc、json、orc、parquet、…...

linux命令九

系统服务 常见重点配置 Listen:监听地址:端口(80) ServerName:本站点注册的DNS名称(空缺) DocumentRoot:网页根目录(/var/www/html) DirectoryIndex:起始…...

ocr-身份证正反面识别

在阿里云官网,申请一个token [阿里官方]身份证OCR文字识别_API专区_云市场-阿里云 (aliyun.com) 观察一下post请求body部分json字符串,我们根据这个创建一个java对象 先默认是人像面 public class IdentityBody {public String image;class configure…...

PCIE Link Equalizaton

1. 均衡概述 link均衡是用于通过调整tx rx的参数来提高信号质量, 所有有LTSSM关联的lane都需要进行均衡操作。均衡只有在低速率的均衡完成之后才可以进行后续高速度的均衡,虽然协议规定可以重复做均衡,但是还是不建议进行同意速率的重复多次均…...

单节锂电池4.2V升压5V都有哪些国产芯片推荐?国产SL4011高效,高性价比

针对单节锂电池(4.2V)升压至5V应用中 SL4011升压芯片 的核心优势解析,结合其技术参数与典型应用场景进行详细说明: 1. 宽输入电压与高兼容性 输入范围:2.7V-12V,完美覆盖单节锂电池全周期电压(3…...

机器学习 | 神经网络介绍 | 概念向

文章目录 📚从生物神经元到人工神经元📚神经网络初识🐇激活函数——让神经元“动起来”🐇权重与偏置——调整信息的重要性🐇训练神经网络——学习的过程🐇过拟合与正则化——避免“死记硬背” &#x1f440…...

视频孪生重构施工逻辑:智慧工地的数字化升级

当"智慧工地"概念在2017年首次写入《建筑业发展"十三五"规划》时,行业普遍将其等同于摄像头与传感器的简单叠加。十年数字浪潮冲刷下,智慧工地的内涵已发生本质跃迁:从工具层面的信息化改造,进化为基于视频数…...

六根觉性:穿透表象的清净觉知之光

在喧嚣的禅堂里,老禅师轻叩茶盏,清脆的声响划破沉寂。这声"叮"不仅震动耳膜,更叩击着修行者的心性——这正是佛教揭示的六根觉性在世间万相中的妙用。当我们凝视《楞严经》中二十五圆通法门,六根觉性犹如六道澄明之光&a…...

spring:注解@Component、@Controller、@Service、@Reponsitory

背景 spring框架的一个核心功能是IOC,就是将Bean初始化加载到容器中,Bean是如何加载到容器的,可以使用spring注解方式或者spring XML配置方式。 spring注解方式直接对项目中的类进行注解,减少了配置文件内容,更加便于…...

【树形dp题解】dfs的巧妙应用

【树形dp题解】dfs的巧妙应用 [P2986 USACO10MAR] Great Cow Gathering G - 洛谷 题目大意: Bessie 正在计划一年一度的奶牛大集会,来自全国各地的奶牛将来参加这一次集会。当然,她会选择最方便的地点来举办这次集会。 每个奶牛居住在 N N …...

Halcon应用:九点标定-手眼标定

提示:若没有查找的算子,可以评论区留言,会尽快更新 Halcon应用:九点标定-手眼标定 前言一、Halcon应用?二、应用实战1、图形理解[eye-to-hand]:1.1、开始应用2 图形理解[eye-in-hand] 前言 本篇博文主要用…...

【iOS】OC高级编程 iOS多线程与内存管理阅读笔记——自动引用计数(一)

自动引用计数 前言alloc/retain/release/dealloc实现苹果的实现 autoreleaseautorelease实现苹果的实现 总结 前言 此前,写过一遍对自动引用计数的简单学习,因此掠过其中相同的部分:引用计数初步学习 alloc/retain/release/dealloc实现 由于…...

Python爬虫第15节-2025今日头条街拍美图抓取实战

目录 一、项目背景与概述 二、环境准备与工具配置 2.1 开发环境要求 2.2 辅助工具配置 三、详细抓取流程解析 3.1 页面加载机制分析 3.2 关键请求识别技巧 3.3 参数规律深度分析 四、爬虫代码实现 五、实现关键 六、法律与道德规范 一、项目概述 在当今互联网时代&a…...

智慧城市像一张无形大网,如何紧密连接你我他?

智慧城市作为复杂巨系统,其核心在于通过技术创新构建无缝连接的网络,使物理空间与数字空间深度融合。这张"无形大网"由物联网感知层、城市数据中台、人工智能中枢、数字服务入口和安全信任机制五大支柱编织而成,正在重塑城市运行规…...

网络安全·第四天·扫描工具Nmap的运用

今天我们要介绍网络安全中常用的一种扫描工具Nmap,它被设计用来快速扫描大型网络,主要功能包括主机探测、端口扫描以及版本检测,小编将在下文详细介绍Nmap相应的命令。 Nmap的下载安装地址为:Nmap: the Network Mapper - Free Se…...

黑龙江 GPU 服务器租用:开启高效计算新征程

随着人工智能、深度学习、大数据分析等技术的广泛应用,对强大计算能力的需求日益迫切。GPU 服务器作为能够提供卓越并行计算能力的关键设备,在这一进程中发挥着至关重要的作用。对于黑龙江地区的企业、科研机构和开发者而言,选择合适的 GPU 服…...

大数据面试问答-HBase/ClickHouse

1. HBase 1.1 概念 HBase是构建在Hadoop HDFS之上的分布式NoSQL数据库,采用列式存储模型,支持海量数据的实时读写和随机访问。适用于高吞吐、低延迟的场景,如实时日志处理、在线交易等。 RowKey(行键) 定义&#xf…...

SparseDrive---论文阅读

纯视觉下的稀疏场景表示 算法动机&开创性思路 算法动机: 依赖于计算成本高昂的鸟瞰图(BEV)特征表示。预测和规划的设计过于直接,没有充分利用周围代理和自我车辆之间的高阶和双向交互。场景信息是在agent周围提取&#xff…...

数字时代的AI与大数据:用高级AI开发技术革新大数据管理

李升伟 编译 在当今数字时代,数据的爆炸式增长令人惊叹 从社交媒体互动到物联网设备的传感器数据,企业正被海量信息淹没。但如何将这种无序的数据洪流转化为有价值的洞察?答案在于人工智能(AI)开发技术的革新&#x…...

Unchained 内容全面上链,携手 Walrus 迈入去中心化媒体新时代

加密新闻媒体 Unchained — — 业内最受信赖的声音之一 — — 现已选择 Walrus 作为其去中心化存储解决方案,正式将其所有媒体内容(文章、播客和视频)上链存储。Walrus 将替代 Unchained 现有的中心化存储架构,接管其全部历史内容…...

确保连接器后壳高性能互连的完整性

本文探讨了现代后壳技术如何促进高性能互连的电气和机械完整性,以及在规范阶段需要考虑的一些关键因素。 当今的航空航天、国防和医疗应用要求连接器能够提供高速和紧凑的互连,能够承受振动和冲击,并保持对电磁和射频干扰 (EMI/R…...

C++学习Day0:c++简介

目录 一、.C语言的发展史二、C特点三、面向对象的重要术语四、面向过程和面向对象的区别?五、开发环境:六、创建文件步骤:1.点击新建项目2.在弹出的开始栏中按如下操作3.在.pro文件中添加(重要!!&#xff0…...