命令“paste - - - -”,如何指定大列号

命令“paste - - - -”,如何指定大列号

在 command 中paste - - - -,numbers-等于未来的列号。就我而言,我有 55,000 个未来专栏,对我来说不需要投入 55,000 个-我可以使用的东西?

例子:

title1:A1
title2:A2
title3:A3
title4:A4
title5:A5

title1:B1
title2:B2
title3:B3
title4:B4
title5:B5

title1:C1
title2:C2
title3:C3
title4:C4
title5:C5

title1:D1
title2:D2
title3:D3
title4:D4
title5:D5

我想将此文件(A)转换为以下内容:

title1 A1   title1 B1   title1 C1   title1 D1   title2 A2
title2 B2   title2 C2   title2 D2   title3 A3   title3 B3
title3 C3   title3 D3   title4 A4   title4 B4   title4 C4
title4 D4   title5 A5   title5 B5   title5 C5   title5 D5

为此,我使用了:

$ sed 's/:/ /; /^$/d' sample.txt \
    | sort | paste - - - - -

但在我的文件中,我将有一个很大的列号:55,000 或 400 列。替代-?? 的其他形式是什么?

答案1

基于这个答案的字符串乘法技巧:https://stackoverflow.com/a/5349772/4082052


使用替换来插入可编程数量的破折号

paste $(for i in {1..400}; do echo -n '- '; done)

或者

paste $(printf -- "- %.s" {1..400})

要知道为什么printf --使用:printf 中的破折号

答案2

对于 4 行的文件:

 paste $(for((i=1;i<4;i++)); do echo -n "- "; done; echo -n "-") < file

相关内容