cut 和 awk 用法

发布时间 2023-04-07 15:30:45作者: wangzy-Zj

一、cut

cut 侧重于对内容进行列切割

  • -d 后面的是分割符,表示用什么符号来分割符来分割列,分隔符使用引号括起来
  • -f 后面跟着要选择的字段列,从1开始,表示第一列,如果要多列,可以用逗号分隔 ,可以使用start-end表示一个区间,解决使用逗号的烦恼。
  • -c 参数后面跟着要选择的字符偏移
  • -b 表示后面跟着要选择的字节偏移

实例演示:

# 实例文本

[root@localhost wangzy]# cat test.txt
aaa;bbb;ccc;ddd;eee
fff;ggg;hhh
iii;jjj;kkk;lll;mmm;nnn
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin

# -d 分隔符用引号括起来

[root@localhost wangzy]# cut -f 2,3 -d ";" test.txt
bbb;ccc
ggg;hhh
jjj;kkk
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin

# 2-3 效果同 2,3效果一样。

[root@localhost wangzy]# cut -f 2-3 -d ";" test.txt
bbb;ccc
ggg;hhh
jjj;kkk
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin

# 以 冒号 为分隔符

[root@localhost wangzy]# cut -f 7 -d ":" test.txt
aaa;bbb;ccc;ddd;eee
fff;ggg;hhh
iii;jjj;kkk;lll;mmm;nnn
/bin/bash
/sbin/nologin
/sbin/nologin
/sbin/nologin
[root@localhost wangzy]#

注意:-d只能和-f一起配合使用,-c不能和-d一起使用,只能单独使用。想一想就很容易明白嘛,-d表示指定分隔符,而-c表示指定区间的字符,不需要分割。

 

二、awk

awk 擅长取列

  • awk用来处理文本和数据,功能很强大,如果是一些简单的操作,可以使用cut命令来实现
  • -F 后面加上分隔符 ,建议空格分开后,使用引号将分隔符括起来,不加-F时,默认是以空格分隔。$0表示整行数据,$1表示第1个字段

用法

用法:awk [options]  ‘{print NR,$0}’ file
-F   指定字段分隔符
NR   表示行号
$0   表示这一行的内容
$1   数字 某一列
$NF  最后一列

实例演示

# 实例参考
[root@localhost wangzy]# cat test.txt root:x:
0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin adm:x:3:4:adm:/var/adm:/sbin/nologin
# 获取第5列 [root@localhost wangzy]# cat test.txt
|awk -F ":" '{print $5}' root bin daemon adm
# 添加参数 [root@localhost wangzy]# cat test.txt
|awk -F ":" '{print $1"=>"$2}' root=>x bin=>x daemon=>x adm=>x [root@localhost wangzy]#