awk - 通过 awk 删除空列
问题描述
我有一个输入文件,它是制表符分隔的,但我想删除所有空列。空列:$13=$14=$15=$84=$85=$86=$87=$88=$89=$91=$94
输入:超过 90 列的 tsv 文件
a b d e g...
a b d e g...
输出:没有空列的 tsv 文件
a b d e g....
a b d e g...
谢谢
解决方案
这可能是你想要的:
$ printf 'a\tb\tc\td\te\n'
a b c d e
$ printf 'a\tb\tc\td\te\n' | awk 'BEGIN{FS=OFS="\t"} {$2=$4=""} 1'
a c e
$ printf 'a\tb\tc\td\te\n' | awk 'BEGIN{FS=OFS="\t"} {$2=$4=RS; gsub("(^|"FS")"RS,"")} 1'
a c e
请注意,上述内容不会像某些潜在的解决方案那样删除所有空列,它只会删除您想要删除的列号:
$ printf 'a\tb\t\td\te\n'
a b d e
$ printf 'a\tb\t\td\te\n' | awk 'BEGIN{FS=OFS="\t"} {$2=$4=RS; gsub("(^|"FS")"RS,"")} 1'
a e
推荐阅读
- sql - 用于显示具有空值的用户的 SQL 查询
- android - 查看寻呼机碎片删除
- javascript - ng-repeat中的AngularJS动态选择
- vb.net - 如何在从 app.config 检索的 FolderBrowser 中设置默认路径?
- azure - CosmosDB 中的分区键与文档 ID
- node.js - 如何在 AWS EC2 上部署 Node.js Express 服务器 + Vue.js 应用程序
- java - 如何获取合并报表的总页数
- vba - 如何使用查询结果填充 ComboBox
- android - 任务':app:processDebugManifest'的执行失败 - React Native
- vb.net - 可以获得文件夹的最后修改日期吗?