【发布时间】:2018-04-14 02:29:17
【问题描述】:
我有一个来自 R 的文件。它基本上是 write.table 命令的输出,使用分隔符 " "。此文件的示例如下所示:
file1.txt
5285 II-3 II-2 2 NA NA NA NA 40 NA NA c.211A>G
8988 III-3 III-4 1 NA NA NA NA NA NA NA c.211A>G
8F412 III-3 III-4 2 NA NA 28 NA NA NA NA c.211A>G
4H644 III-3 III-4 2 NA NA NA NA NA NA NA NA
我需要的是一个非常特定格式的新文件,基本上我需要使用空格对齐所有列,我不能使用制表符。
所需的输出将是
5285 II-3 II-2 2 NA NA NA NA 40 NA NA c.211A>G
8988 III-3 III-4 1 NA NA NA NA NA NA NA c.211A>G
8F412 III-3 III-4 2 NA NA 28 NA NA NA NA c.211A>G
4H644 III-3 III-4 2 NA NA NA NA NA NA NA NA
因此,在第一行5285 和II-3 之间将有3 个空格,而在第三行8F412 和III-3 之间只有两个空格。第一个树字段的长度可以不同,但是其余列的长度始终是固定的(两个字符),但最后一个可以是 12 个字符
我可以在文本编辑器中执行此操作,但我有一个非常大的文件,我想使用 bash、awk 或 R 来执行此操作
【问题讨论】:
-
使用
awk和printf。 -
@codeforester,我的awk知识很基础,能发个例子吗?
标签: bash awk formatting