From 0912e81191e4adcdfe7dda75e37e2645b23ae64b Mon Sep 17 00:00:00 2001 From: wxy Date: Sun, 17 Jul 2016 23:31:58 +0800 Subject: [PATCH] PUB:Part 2 - How to Use Awk to Print Fields and Columns in File MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit @ictlyh @Cathon 这篇选稿正好和系列选题中重复了,我就综合校对了。@oska874 --- ...Awk to Print Fields and Columns in File.md | 0 ...Awk to Print Fields and Columns in File.md | 33 ++++++++++--------- 2 files changed, 18 insertions(+), 15 deletions(-) rename {translated/tech => published}/20160425 How to Use Awk to Print Fields and Columns in File.md (100%) rename {translated/tech/awk => published}/Part 2 - How to Use Awk to Print Fields and Columns in File.md (72%) diff --git a/translated/tech/20160425 How to Use Awk to Print Fields and Columns in File.md b/published/20160425 How to Use Awk to Print Fields and Columns in File.md similarity index 100% rename from translated/tech/20160425 How to Use Awk to Print Fields and Columns in File.md rename to published/20160425 How to Use Awk to Print Fields and Columns in File.md diff --git a/translated/tech/awk/Part 2 - How to Use Awk to Print Fields and Columns in File.md b/published/Part 2 - How to Use Awk to Print Fields and Columns in File.md similarity index 72% rename from translated/tech/awk/Part 2 - How to Use Awk to Print Fields and Columns in File.md rename to published/Part 2 - How to Use Awk to Print Fields and Columns in File.md index c0b526b925..69f372d099 100644 --- a/translated/tech/awk/Part 2 - How to Use Awk to Print Fields and Columns in File.md +++ b/published/Part 2 - How to Use Awk to Print Fields and Columns in File.md @@ -1,18 +1,19 @@ -如何使用 Awk 输出文本中的字段和列 +awk 系列:如何使用 awk 输出文本中的字段和列 ====================================================== -在 Awk 系列的这一节中,我们将看到 Awk 最重要的特性之一,字段编辑。 +在 Awk 系列的这一节中,我们将看到 awk 最重要的特性之一,字段编辑。 -需要知道的是,Awk 能够自动将输入的行,分隔为若干字段。每一个字段就是一组字符,它们和其他的字段由一个内部字段分隔符分隔开来。 +首先我们要知道,Awk 能够自动将输入的行,分隔为若干字段。每一个字段就是一组字符,它们和其他的字段由一个内部字段分隔符分隔开来。 ![](http://www.tecmint.com/wp-content/uploads/2016/04/Awk-Print-Fields-and-Columns.png) ->Awk Print Fields and Columns -如果你熟悉 Unix/Linux 或者使用 [bash 脚本][1]编过程,那么你应该知道什么是内部字段分隔符(IFS)变量。Awk 中默认的 IFS 是制表符和空格。 +*Awk 输出字段和列* -Awk 中的字段分隔符的工作流程如下:当读到一行输入时,将它按照指定的 IFS 分割为不同字段,第一组字符就是字段一,可以通过 $1 来访问,第二组字符就是字段二,可以通过 $2 来访问,第三组字符就是字段三,可以通过 $3 来访问,以此类推,直到最后一组字符。 +如果你熟悉 Unix/Linux 或者懂得 [bash shell 编程][1],那么你应该知道什么是内部字段分隔符(IFS)变量。awk 中默认的 IFS 是制表符和空格。 -为了更好地理解 Awk 的字段编辑,让我们看一个下面的例子: +awk 中的字段分隔符的工作原理如下:当读到一行输入时,将它按照指定的 IFS 分割为不同字段,第一组字符就是字段一,可以通过 $1 来访问,第二组字符就是字段二,可以通过 $2 来访问,第三组字符就是字段三,可以通过 $3 来访问,以此类推,直到最后一组字符。 + +为了更好地理解 awk 的字段编辑,让我们看一个下面的例子: **例 1**:我创建了一个名为 tecmintinfo.txt 的文本文件。 @@ -22,7 +23,8 @@ Awk 中的字段分隔符的工作流程如下:当读到一行输入时,将 ``` ![](http://www.tecmint.com/wp-content/uploads/2016/04/Create-File-in-Linux.png) ->在 Linux 上创建一个文件 + +*在 Linux 上创建一个文件* 然后在命令行中,我试着使用下面的命令从文本 tecmintinfo.txt 中输出第一个,第二个,以及第三个字段。 @@ -47,15 +49,16 @@ $ awk '//{print $1, $2, $3; }' tecmintinfo.txt TecMint.com is the ``` -需要记住而且非常重要的是,`($)` 在 Awk 和在 shell 脚本中的使用是截然不同的! +需要记住而且非常重要的是,`($)` 在 awk 和在 shell 脚本中的使用是截然不同的! -在 shell 脚本中,`($)` 被用来获取变量的值。而在 Awk 中,`($)` 只有在获取字段的值时才会用到,不能用于获取变量的值。 +在 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 +2 Monitor #500,000 1 #500,000 3 RAM_Chips #150,000 2 #300,000 4 Ethernet_Cables #30,000 4 #120,000 ``` @@ -72,7 +75,7 @@ RAM_Chips #150,000 Ethernet_Cables #30,000 ``` -可以看到上面的输出不够清晰,Awk 还有一个 `printf` 的命令,可以帮助你将输出格式化。 +可以看到上面的输出不够清晰,awk 还有一个 `printf` 的命令,可以帮助你将输出格式化。 使用 `printf` 来格式化 Item_Name 和 Unit_Price 的输出: @@ -88,7 +91,7 @@ Ethernet_Cables #30,000 ### 总结 -使用 Awk 过滤文本或字符串时,字段编辑的功能是非常重要的。它能够帮助你从一个表的数据中得到特定的列。一定要记住的是,Awk 中 `($)` 操作符的用法与其在 shell 脚本中的用法是不同的! +使用 awk 过滤文本或字符串时,字段编辑的功能是非常重要的。它能够帮助你从一个表的数据中得到特定的列。一定要记住的是,awk 中 `($)` 操作符的用法与其在 shell 脚本中的用法是不同的! 希望这篇文章对您有所帮助。如有任何疑问,可以在评论区域发表评论。 @@ -97,8 +100,8 @@ Ethernet_Cables #30,000 via: http://www.tecmint.com/awk-print-fields-columns-with-space-separator/ 作者:[Aaron Kili][a] -译者:[Cathon](https://github.com/Cathon) -校对:[校对者ID](https://github.com/校对者ID) +译者:[Cathon](https://github.com/Cathon),[ictlyh](https://github.com/ictlyh) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出