gpt4 book ai didi

sed - 将 ascii 文件中的所有条目放在 awk 的一列中

转载 作者:行者123 更新时间:2023-12-04 21:44:46 24 4
gpt4 key购买 nike

我有以下文件

CHO 1
4096
26 20 0 0 0 0 0 0 0 0
0 0 0 0 0 3 5 15 8 14
9 7 13 10 12 9 5 3 3 2
2 0 0 0 0 0 0 1 1 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 1 0 1 0 0 0
0 0 0 0 0 0 1 0 0 0
0 0 0 0 1 0 0 0 0 0
6 8 5 5 7 13 13 33 23 29
44 51 56 42 39 31 21 24 18 18
18 30 44 43 51 67 102 110 130 130
100 96 87 49 25 16 4 1 1 0
0 0 0 0 0 0

我想做的是将 4096 之后的所有条目放在一列中。所需的输出如下

1 26
2 20
3 0
4 0
5 0
6 0
7 0
8 0
9 0
10 0
...
4096 0

我不知道如何使用 awk 来完成它。例如,我尝试使用

将它们放在一行中

awk -F'\n' '{if(NR == 1) {printf $0} else {printf $0}}' 文件

但我不知道如何将它们放到一栏中。更不用说第一个条目不符合预期了。

CHO 1409626 20 0 0 0 0 0 0 0 0 0 0 0 0 0 3 5

关于如何获得所需的两列输出的任何想法?任何帮助都非常受欢迎!!!

最佳答案

使用 Perl 可以通过重新改编来完成:

#!/usr/bin/perl

use strict;
use warnings;

my @lines = ('CHO 1', '4096', #simulate line-by-line loading of the file
'26 20 0 0 0 0 0 0 0 0',
'0 0 0 0 0 3 5 15 8 14',
'9 7 13 10 12 9 5 3 3 2',
'2 0 0 0 0 0 0 1 1 0',
'0 0 0 0 0 0 0 0 0 0',
'0 0 0 0 1 0 1 0 0 0',
'0 0 0 0 0 0 1 0 0 0',
'0 0 0 0 1 0 0 0 0 0',
'6 8 5 5 7 13 13 33 23 29',
'44 51 56 42 39 31 21 24 18 18',
'18 30 44 43 51 67 102 110 130 130',
'100 96 87 49 25 16 4 1 1 0',
'0 0 0 0 0 0');


my $first_line = shift @lines; #removes CHO 1
my $stop = shift @lines; #removes 4096
my $i = 0;


foreach my $line (@lines) {
$line =~ s/^\s*//;
$line =~ s/\s*$//;

my @parts = split(/\s+/, $line);
foreach my $part (@parts) {
print "$i $part\n"; #prints to stdout, maybe you want to print into a file
$i++;
}

}

这是输出:

0 26
1 20
2 0
3 0
4 0
5 0
6 0
7 0
8 0
9 0
10 0
11 0
12 0
13 0
14 0
15 3
16 5
...
125 0
...

关于sed - 将 ascii 文件中的所有条目放在 awk 的一列中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21939373/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com