前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >使用awk打印文件中的字段和列

使用awk打印文件中的字段和列

作者头像
入门笔记
发布于 2022-06-02 07:49:35
发布于 2022-06-02 07:49:35
10K00
代码可运行
举报
文章被收录于专栏:入门小站入门小站
运行总次数:0
代码可运行

Awk 自动将提供给它的输入行划分为字段,一个字段可以定义为一组字符,这些字符通过内部字段分隔符与其他字段分开。

如果你熟悉 Unix/Linux 或者做bash shell 编程,那么你应该知道什么是内部字段分隔符 (IFS) 变量是。Awk 中的默认 IFS 是制表符和空格。

Awk: 遇到输入行时,根据定义的IFS,第一组字符为field one,访问时使用 1,第二组字符是字段二,使用访问 2,第三组字符是字段三,使用访问

为了更好地理解这个 awk 字段编辑,让我们看看下面的例子:

Example 1: 我创建了一个名为的文本文件 .

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
> vi rumenzinfo.txt
> cat rumenzinfo.txt
rumenz.com is the nb
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
> awk '//{print $1 $2 $3 }' rumenzinfo.txt

rumenz.comisthe

从上面的输出中,您可以看到前三个字段中的字符是根据 IFS 定义哪个是空间:

  1. 字段一是 rumenz.com使用$1.
  2. 字段二是 is使用$2.
  3. 第三场是 the使用$3.

如果您在打印输出中注意到,字段值没有分开,这就是打印默认的行为方式。

要在字段值之间使用空格清楚地查看输出,您需要添加(,)运算符,如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
> awk '//{print $1, $2, $3; }' rumenzinfo.txt

rumenz.com is the

需要注意并始终记住的一件重要事情是使用($)inAwk 不同于它在 shell 脚本中的使用。

在 shell 脚本()中用于访问变量的值,而在Awk () 它仅在访问字段内容时使用,而不用于访问变量值。

Example 2: 让我们看一个使用包含多行的文件的另一个例子

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
> cat my_shoping.list

No Item_Name              Unit_Price Quantity Price
1   Mouse                 #20,000     1      #20,000
2  Monitor               #500,000    1      #500,000
3   RAM_Chips              #150,000    2      #300,000
4   Ethernet_Cables         #30,000     4      #120,000

假设您只想打印Unit_Price购物清单上的每件商品,您需要运行以下命令:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
> awk '//{print $2, $3 }' my_shopping.txt

Item_Name Unit_Price
Mouse #20,000
Monitor #500,000
RAM_Chips #150,000
Ethernet_Cables #30,000

Awk还有一个printf命令可以帮助您格式化输出,这是一个很好的方法,因为您可以看到上面的输出不够清楚。

使用printf格式化的输出Item_NameUnit_Price

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
> awk '//{printf "%-10s %s\n",$2, $3 }' my_shopping.txt 

Item_Name  Unit_Price
Mouse      #20,000
Monitor    #500,000
RAM_Chips  #150,000
Ethernet_Cables #30,000

相关文章

Shell三大利器之awk

linux之awk使用技巧

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-09-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 入门小站 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验