Linux awk 文本文件处理

标签 linux awk text-processing

我有一个包含几千行数据的文件,每一行都是这样的:a:b:c:d

例如:

0.0:2000.00:2000.04:2000.02

我想在一个文件中获取所有 a,在第二个文件中获取所有 b,等等。怎么做?

最佳答案

一种方式。输出文件将被命名为 fileX,每个列号都有 X

假设 infile 内容:

0.0:2000.00:2000.04:2001.02
0.1:2002.00:2000.05:2003.02
0.2:2003.00:2002.04:2004.02
0.3:2001.00:2000.05:2000.03
0.3:2001.00:2000.04:2001.02
0.2:2001.00:2002.04:2000.02

执行这个 awk 命令:

awk '
    BEGIN {
        FS = ":";
    }

    {
        for ( i = 1; i <= NF; i++ ) {
            print $i > "file" i;
        }
    }
' infile

检查输出文件:

head file[1234]

结果如下:

==> file1 <==
0.0
0.1
0.2
0.3
0.3
0.2

==> file2 <==
2000.00
2002.00
2003.00
2001.00
2001.00
2001.00

==> file3 <==
2000.04
2000.05
2002.04
2000.05
2000.04
2002.04

==> file4 <==
2001.02
2003.02
2004.02
2000.03
2001.02
2000.02

关于Linux awk 文本文件处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11924967/

相关文章:

linux - 编辑目录中的多个文本文件

python - 处理一列文本文件中丢失的数据

java - 我应该如何在 Java 中处理大量文本?

rust - 如何检查字符串是否仅包含 Rust 中的字符集?

linux - 如何创建一个 pam 模块?

linux -/usr/include/zconf.h 属性变成了 ----------

c++ - 如何使用引号将参数传递给系统函数?

linux - 不带参数或输入文件的简单 awk 脚本

Linux - Bash 将字符串重定向到文件

bash - 解析系统日志以计算特定值