awk - awk 插入值和删除字段
问题描述
尝试根据 中的模式awk
将值插入,然后删除。已经有一个值我试图在它前面插入一个新值,两个值之间有一个。确实执行但未按预期执行。谢谢 :)。$4
$5
$5
$4
:
awk
F tab-delimited
chr1 629031 GT:CN 4 High Copy Gain
chr1 632301 GT:CN 3 CN Gain
chr1 6440431 GT:CN 2 CN Loss
chr1 16691021 GT:CN 1 Homozygous Copy Loss
chr1 6440431 GT:CN 0 CN Loss
awk
awk -F'\t' '{if ( $5~ /CN/ ) {print $4 ":" "0/1"} else {print $ ":" "1/1"}}' OFS="\t" f.txt | awk -F'\t' '!($5="")'
当前的 tab-delimited
chr1 629031 GT:CN 4
3:0/1
2:0/1
chr1 16691021 GT:CN 1
0:0/1
想要的 tab-delimited
chr1 629031 GT:CN 1/1:4
chr1 632301 GT:CN 0/1:3
chr1 6440431 GT:CN 0/1:2
chr1 16691021 GT:CN 1/1:1
chr1 6440431 GT:CN 0/1:0
解决方案
您有错字并使用 print 而不是修改字段,
$ awk 'BEGIN{FS=OFS="\t"} {$4=(($5~/CN/)?"0":"1")"/1:"$4; $5=""}1' file
应该做你想做的事。
可以进一步简化为
$ awk 'BEGIN{FS=OFS="\t"} {$4=($5!~/CN/)"/1:"$4; $5=""}1' file
推荐阅读
- angular - Angular 模块路由 - 不是路由
- java - 使用自动分页符打印 WebView/WebEngine
- c++ - 如果带有模板参数和参数包,如何使用启用?
- azure - 使用用户分配的托管标识进行 Azure 服务总线身份验证
- javascript - 异步函数存储另一个异步函数的数据
- rest - 使用机器人框架和 REST 上传带有 Post 请求的 zip 文件
- c# - 我应该在哪里过滤微服务架构模式中的 MS 级外部服务响应?
- powershell - 如何使用powershell运行cmd命令
- javascript - 使用节点中嵌套对象的字符串文字进行 JSON 解析
- javascript - 如何确定使用 JavaScript 进行电子邮件混淆是否有效?