Linux 使用awk的split函数来去掉文件中某个字段的某一部分

这里有一个文件如下:

 我需要去掉前面的lane,那么我们来分析一下使用shell来解决的思路,grep和sed命令都是针对整行的内容进行提取的,因此无法对一行中的某个字段的内容进行修改,因此我们使用awk来解决这个问题,awk中有一些内置的方法,这里使用split来拆分字段,split()接收三个参数,第一个参数是字段,第二个参数是拆分后的数组名称,最后一个参数是separator分隔符,这里我将分隔符设置为lane,然后提取数组的第二个元素,这里需要注意的是数组是从1开始的,因此我们应该使用a[2]来提取后面的数字,那么解决的代码如下所示:

awk -F"\t" 'BEGIN{OFS="\t"} NR>1{split($0,a,"lane");print a[2]}' sample_list_B1S4.release.20181105>sample_list_B1S4.release.20181105.new

这里有几个点需要注意,第一个点是NR>1可以不去管第一行的内容,另一个要注意的是lane需要使用双引号来包围,因为在shell脚本语言中,单引号是强引用,双引号是弱引用,我们使用单引号的话,结果将非常奇怪,会将lane1按照字母进行拆分!这是因为在外层的连个单引号中间又出现了两个单引号,将内容切割成了两个部分!所以单引号里面不能再有单引号,双引号里面也不能再有双引号。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值