Awk
自动将提供给它的输入行划分为字段,一个字段可以定义为一组字符,这些字符通过内部字段分隔符与其他字段分开。如果你熟悉 Unix/Linux 或者做bash shell 编程,那么你应该知道什么是内部字段分隔符 (
IFS
) 变量是。Awk 中的默认 IFS 是制表符和空格。Awk: 遇到输入行时,根据定义的IFS,第一组字符为field one,访问时使用 1,第二组字符是字段二,使用访问 2,第三组字符是字段三,使用访问
为了更好地理解这个 awk 字段编辑,让我们看看下面的例子:
> vi rumenzinfo.txt
> cat rumenzinfo.txt
rumenz.com is the nb
> awk '//{print $1 $2 $3 }' rumenzinfo.txt
rumenz.comisthe
从上面的输出中,您可以看到前三个字段中的字符是根据
IFS
定义哪个是空间:
rumenz.com
使用$1
.is
使用$2
.the
使用$3
.如果您在打印输出中注意到,字段值没有分开,这就是打印默认的行为方式。
要在字段值之间使用空格清楚地查看输出,您需要添加
(,)
运算符,如下所示:
> awk '//{print $1, $2, $3; }' rumenzinfo.txt
rumenz.com is the
需要注意并始终记住的一件重要事情是使用
($)
inAwk
不同于它在 shell 脚本中的使用。在 shell 脚本()中用于访问变量的值,而在Awk () 它仅在访问字段内容时使用,而不用于访问变量值。
> 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
购物清单上的每件商品,您需要运行以下命令:
> 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_Name
和Unit_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
相关文章
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有