Linux字段处理之cut,join实例详解



字段处理

1.使用cut选定字段

cut 语法

cut -c list [file...]

cut -f list [-d delim] [file...]

        -c list :以字符为主,执行剪下操作

        -f list :以字段为主,执行剪下操作

    -d delim :通过-f选项,以delim作为定界符,默认为空格

 

实例:

[gz_fieldyang@ test ~]$ ls -l | grep example   

-rw-rw-r-- 1 gz_fieldyang gz_fieldyang  50 Mar  4 16:06 example.txt

[gz_fieldyang@ test ~]$ ls -l |grep example|cut -c 1-5,40-50  

-rw-r 50 Mar  4                                          #1-5,40-50两段

[gz_fieldyang@ test ~]$ cat /etc/passwd |grep field               

gz_fieldyang:x:859:859::/home/gz_fieldyang:/bin/bash

[gz_fieldyang@ test ~]$ cut -d: -f 1 /etc/passwd |grep field

gz_fieldyang                                              #以分号为定界符取第一段

[gz_fieldyang@ test ~]$ cut -d: -f 6 /etc/passwd |grep field

/home/gz_fieldyang

[gz_fieldyang@ test ~]$ cut -d: -f 2-6 /etc/passwd |grep field

x:859:859::/home/gz_fieldyang              #以分号为定界符取第二到六段

[gz_fieldyang@ test ~]$ cut -d: -f 2,6 /etc/passwd |grep field

x:/home/gz_fieldyang

[gz_fieldyang@ test ~]$

 

2.使用join连接字段:

用法:以共同一个键值,将已存储文件内的记录加以结合

找出两个文件中,指定栏位内容相同的行,并加以合并,再输出到标准输出设备

join语法

join [option...] file1 file2

join [-i][-a<12>][-e<字符串>][-o<格式>][-t<字符>][-v<1 2>][-1<栏位>][-2<栏位>][--help][--version][文件1][文件2]

 

常用参数说明:

  -a<12>   除了显示原来的输出内容之外,还显示指令文件中没有相同栏位的行。

  -e<字符串>   [文件1][文件2]中找不到指定的栏位,则在输出中填入选项中的字符串。

  -i--igore-case   比较栏位内容时,忽略大小写的差异。

  -o<格式>   按照指定的格式来显示结果。

  -t<字符>   使用栏位的分隔字符。

  -v<12>   -a相同,但是只显示文件中没有相同栏位的行。

  -1<栏位>   连接[文件1]指定的栏位。

  -2<栏位>   连接[文件2]指定的栏位。

  --help   显示帮助。

  --version   显示版本信息。

 

实例:创建文件发file1file2内容如下

[gz_fieldyang@ test ~]$ cat > sales

# 业务员数据

# 业务员  

Kin_ma     210

Jones_yan  212

Field_yang 118

Will_wu    260

[gz_fieldyang@ test ~]$ cat > quotas

#配额

#业务员    配额

Kin_ma      102

Jones_yan   132

Field_yang  263

Will_wu     282

[gz_fieldyang@ test ~]$ join quotas sales

Will_wu 282 260                       #未删除注释,结合最后一行

#删除注释后,可结合所有数据

[gz_fieldyang@ test ~]$ join sales quotas

Kin_ma 210 102

Jones_yan 212  132

Field_yang 118  263

Will_wu 260 282

[gz_fieldyang@ test ~]$

 

实例:结合两个文件的脚本

[gz_fieldyang@ test ~]$ cat > merge-sales.sh

#!/bin/bash

#merge-sales.sh

#

# 结合配额与业务员数据

# 删除数据并排序数据文件

sed '/^#/d'quotas | sort >quotas.sorted

sed '/^#/d'sales | sort >sales.sorted

#以第一个键值做结合,将结果产生至标准输出

join quotas.sorted sales.sorted                                                          

# 删除缓存文件

rm quotas.sorted sales.sorted

[gz_fieldyang@ test ~]$ chmod +x merge-sales.sh

[gz_fieldyang@ test ~]$ ./merge-sales.sh 

Field_yang 263  118

Jones_yan 132 212

Kin_ma 102 210

Will_wu 282 260

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值