如何使用Awk打印文件中的字段和列

在我们的这部分 ,我们将看看awk的,这是场编辑的最重要的特征之一。

这是好事,知道awk中自动将提供给它的成字段输入线和字段可以定义为一组从其他领域由内部字段分隔分隔的字符。

Awk打印字段和列

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

这是场分离的想法如何在awk的工作原理:当它遇到的输入线,根据规定的IFS,第一个字符集是字段中的一个,这是使用$ 1端口接入,第二个字符集是第二场,这使用$ 2访问,第三个字符集是第三场,这是使用$ 3浏览等等,直到最后一组字符(县)的。

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

例1:我已经创建了一个名为youclinfo.txt的文本文件。

# vi youclinfo.txt
# cat youclinfo.txt

在Linux中创建文件

然后,在命令行中,我尝试打印从文件中第一第二第三个字段youclinfo.txt使用下面的命令:

$ awk '//{print $1 $2 $3 }' youclinfo.txt
youcl.comisthe

从上面的输出,你可以看到,从第一三个字段中的字符是基于定义的IFS是空间印花:

  1. 一个字段是“youcl.com”使用访问$1
  2. 第二场是“就是”是使用访问$2
  3. 第三场是“的”使用访问$3

如果您在打印输出中注意到,字段值不分隔,这是默认情况下打印的行为。

为了与现场值之间的空间清晰的查看输出,你需要添加(,)如下运营商:

$ awk '//{print $1, $2, $3; }' youclinfo.txt
youcl.com is the

一个重要的一点要注意,始终记住的是,使用($)awk中与其在shell脚本使用不同的。

在shell脚本($)用于访问变量的值,而在awk中 ($)它是只访问一个字段的内容时,但不能用于访问变量的值使用。

例2:让我们用它包含多行称为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购物清单上的每一个项目,你将需要运行以下命令:

$ 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的输出:

$ 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

概要

awk过滤文本或字符串时,现场编辑是非常重要的,它可以帮助您获得特定的数据列在列表中。 永远记住,使用($)awk的运营商在shell脚本的不同。

我希望这篇文章对您有帮助,并且任何其他信息需要或问题,您可以在评论部分发表评论。

赞(52) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏