Linux awk文本文件处理

Pri*_*alj 1 linux awk text-processing

我有一个包含几千行数据的文件,每行如下: a:b:c:d

例如:

0.0:2000.00:2000.04:2000.02
Run Code Online (Sandbox Code Playgroud)

我想把所有的东西放在一个文件中,b在第二个文件中等等.怎么样?

Bir*_*rei 6

单程.输出文件将命名为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
Run Code Online (Sandbox Code Playgroud)

执行以下awk命令:

awk '
    BEGIN {
        FS = ":";
    }

    {
        for ( i = 1; i <= NF; i++ ) {
            print $i > "file" i;
        }
    }
' infile
Run Code Online (Sandbox Code Playgroud)

检查输出文件:

head file[1234]
Run Code Online (Sandbox Code Playgroud)

结果如下:

==> 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
Run Code Online (Sandbox Code Playgroud)

  • 不错,但单行的11行剧本有点过分. (2认同)