特定列中的字符数(长度)
Character count (length) within specific column
是否有一种单行方法来获取制表符分隔的 .txt 文件的特定列中保存的字符串的字符长度,然后将这些计数附加到最后一列(列数可能是可变的)?
示例数据:
1 AA
2 BBB
3 CCCCC
4 EE
5 DDD
6 AAA
7 FFFFF
8 AA
9 BBB
10 NNN
为了获得计数,我尝试使用:
perl -lane 'print length $F[2]' in > out
perl -F, -Mopen=:locale -lane 'print length $F[2]' in > out
然而,结果是空的。
我也试过:
perl -lane '$_.=$F[2]; print length $_'
但是,正如我现在意识到的那样,它打印了整行而不是特定列的字符数。
我不确定我将如何附加最后一列。
期望输出(计算第 2 列时):
1 AA 2
2 BBB 3
3 CCCCC 5
4 EE 2
5 DDD 3
6 AAA 3
7 FFFFF 5
8 AA 2
9 BBB 3
10 NNN 3
看来你们很亲近。 Perl 数组索引从零开始,那么使用 $F[1]
的长度怎么样?您还需要某种分隔符
perl -lape '$_ .= "\t". length($F[1])' input
输出
1 AA 2
2 BBB 3
3 CCCCC 5
4 EE 2
5 DDD 3
6 AAA 3
7 FFFFF 5
8 AA 2
9 BBB 3
10 NNN 3
如果您想要输出完全,那么您需要像这样使用printf
perl -lane 'printf qq{%-4d%-8s%d\n}, @F, length($F[1])' input
输出
1 AA 2
2 BBB 3
3 CCCCC 5
4 EE 2
5 DDD 3
6 AAA 3
7 FFFFF 5
8 AA 2
9 BBB 3
10 NNN 3
是否有一种单行方法来获取制表符分隔的 .txt 文件的特定列中保存的字符串的字符长度,然后将这些计数附加到最后一列(列数可能是可变的)?
示例数据:
1 AA
2 BBB
3 CCCCC
4 EE
5 DDD
6 AAA
7 FFFFF
8 AA
9 BBB
10 NNN
为了获得计数,我尝试使用:
perl -lane 'print length $F[2]' in > out
perl -F, -Mopen=:locale -lane 'print length $F[2]' in > out
然而,结果是空的。
我也试过:
perl -lane '$_.=$F[2]; print length $_'
但是,正如我现在意识到的那样,它打印了整行而不是特定列的字符数。
我不确定我将如何附加最后一列。
期望输出(计算第 2 列时):
1 AA 2
2 BBB 3
3 CCCCC 5
4 EE 2
5 DDD 3
6 AAA 3
7 FFFFF 5
8 AA 2
9 BBB 3
10 NNN 3
看来你们很亲近。 Perl 数组索引从零开始,那么使用 $F[1]
的长度怎么样?您还需要某种分隔符
perl -lape '$_ .= "\t". length($F[1])' input
输出
1 AA 2
2 BBB 3
3 CCCCC 5
4 EE 2
5 DDD 3
6 AAA 3
7 FFFFF 5
8 AA 2
9 BBB 3
10 NNN 3
如果您想要输出完全,那么您需要像这样使用printf
perl -lane 'printf qq{%-4d%-8s%d\n}, @F, length($F[1])' input
输出
1 AA 2
2 BBB 3
3 CCCCC 5
4 EE 2
5 DDD 3
6 AAA 3
7 FFFFF 5
8 AA 2
9 BBB 3
10 NNN 3