使用 awk 或 Linux 上的命令行从文件中删除列
如何使用 awk 从制表符分隔的字段文件中删除某些列?
c1 c2 c3 ..... c60
例如,删除 3 和 29 之间的列。
How can I delete some columns from a tab separated fields file with awk
?
c1 c2 c3 ..... c60
For example, delete columns between 3 and 29 .
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
这就是
cut
命令的用途:默认为 Tab。您可以使用
-d
开关更改它。This is what the
cut
command is for:The default is tab. You can change that with the
-d
switch.您可以循环遍历所有列并过滤掉不需要的列:
其中
NF
为您提供记录中的字段总数。对于满足条件的每一列,我们打印该列,后跟一个空格
" "
。编辑:在约翰尼的评论后更新:
这通过两种方式进行了改进:
You can loop over all columns and filter out the ones you don't want:
where the
NF
gives you the total number of fields in a record.For each column that meets the condition we print the column followed by a space
" "
.EDIT: updated after remark from johnny:
this is improved in 2 ways:
输入
输出
Input
Output
Perl“拼接”解决方案不添加前导或尾随空格:
产生输出:
Perl 'splice' solution which does not add leading or trailing whitespace:
Produces output: