awk工具的使用

本文详细介绍了Linux中awk命令的使用,包括如何通过awk截取文件中的列,如输出第二列和第六列,并利用BEGIN和END规则处理数据。同时,文章讲解了printf命令的用法,演示了不同格式的输出方式,如如何控制换行和调整输出格式。此外,还提到了awk中的FS变量用于指定字段分隔符。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在Linux中没有print在awk中print和printf都可使用,区别是printf不可以自动换行
1.截取文档中的,注重按部分输出
格式:awk’条件1{动作1}条件2{动作2}…'文件名
(1)输出第二列和第六列
在这里插入图片描述
BEGIN
在这里插入图片描述
FS内置变量
指定分隔符
可以发现第一行没有进行处理是因为要先读入第一行数据在进行处理

[root@tomcat ~]# awk '{FS=":"}{print $1 "\t" $3}' /etc/passwd
root:x:0:0:root:/root:/bin/bash	
bin	1
daemon	2
adm	3
lp	4
sync	5
shutdown	6
halt	7
mail	8
operator	11
games	12
ftp	14
nobody	99
avahi-autoipd	170
systemd-bus-proxy	999
systemd-network	998
dbus	81
polkitd	997
tss	59
postfix	89
sshd	74
mysql	27

解决方法:在FS 前强制加一个BEGIN

[root@tomcat ~]# awk BEGIN'{FS=":"}{print $1 "\t" $3}' /etc/passwd
root	0
bin	1
daemon	2
adm	3
lp	4
sync	5
shutdown	6
halt	7
mail	8
operator	11
games	12
ftp	14
nobody	99
avahi-autoipd	170
systemd-bus-proxy	999
systemd-network	998
dbus	81
polkitd	997
tss	59
postfix	89
sshd	74
mysql	27

END
在所有数字打印完之后输入qqqq

[root@tomcat ~]# awk BEGIN'{FS=":"}END{print"qqqq"}{print $1 "\t" $3}' /etc/passwd
root	0
bin	1
daemon	2
adm	3
lp	4
sync	5
shutdown	6
halt	7
mail	8
operator	11
games	12
ftp	14
nobody	99
avahi-autoipd	170
systemd-bus-proxy	999
systemd-network	998
dbus	81
polkitd	997
tss	59
postfix	89
sshd	74
mysql	27
qqqq

关系运算符
-v表示反选不包括
在这里插入图片描述

-F指定分隔符,不加-F,则会以空格或者tab为分隔符

[root@tomcat ~]# head -n2 /etc/passwd |awk -F ':' '{print $1}'
root
bin

要注意以下这一点
在这里插入图片描述
2.匹配字符或者字符串
在这里插入图片描述
printf命令
printf ‘输出类型输出格式’ 输出内容

在这里插入图片描述
在这里插入图片描述
把123456当成完整的输出且没有任何格式
在这里插入图片描述
把123456换行输出

[root@tomcat ~]# printf '%s %s %s\n' 1 2 3 4 5 6
1 2 3
4 5 6

打印文档中的内容
在这里插入图片描述
调整格式后输出

[root@tomcat ~]# printf '%s\t %s\t %s\t\n' $(cat student.txt)
ID	 Name	 Age	
1	 xx	 11	
2	 bb	 12	
3	 hh	 13	
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值