Bash 将每行中的元素处理为多行

Bash 将每行中的元素处理为多行,bash,awk,sed,Bash,Awk,Sed,我需要帮助处理一个文件,其中包含多行逗号分隔的元素。该文件的外观如下所示: 文件-1.txt 54, 75, 19, 123, 74, 15, 10, 117 54, 75, 19, 45, 74, 15, 10, 117 54, 29, 19, 123, 74, 15, 10, 117 54, 29, 19, 45, 74, 15, 10, 117 我想将每行逗号分隔的值转换成两列,用tab分隔,如下所示: 输出文件: 54 75 75 19 19 123 123 74 74

我需要帮助处理一个文件,其中包含多行逗号分隔的元素。该文件的外观如下所示:

文件-1.txt

54, 75, 19, 123, 74, 15, 10, 117 
54, 75, 19, 45, 74, 15, 10, 117 
54, 29, 19, 123, 74, 15, 10, 117 
54, 29, 19, 45, 74, 15, 10, 117  
我想将每行逗号分隔的值转换成两列,用tab分隔,如下所示:

输出文件:

54  75
75  19
19  123
123 74
74  15
15  10
10  117
同样,每一行都保存到一个单独的文件中,该文件名为原始行的第一个和最后一个数字,后跟行号,如下所示

输出文件1

ABC-54_117-1

54  75
75  19
19  123
123 74
74  15
15  10
10  117
输出文件2

ABC-54_117-2

54  75
75  19
19  45
45  74
74  15
15  10
10  117 
其他两行也是如此。在本例中,一个文件中有4行,但我有几个文件有很多行,这需要以相同的方式处理。我尝试了awk和sed脚本,但根本无法破解


任何帮助都将不胜感激。

您可以使用此
awk

awk -F', +' '{f=$1"_"$NF"_"NR; for (i=1; i<NF; i++){print $i,$(i+1)>f}}' OFS='\t' file

您可以使用此
awk

awk -F', +' '{f=$1"_"$NF"_"NR; for (i=1; i<NF; i++){print $i,$(i+1)>f}}' OFS='\t' file

完整的解决办法是:

awk -F, '{ cnt++;for (i=1;i<=7;i++) { system("echo \""$i" "$(i+1)"\" >> \"ABC-"$1"_"gensub(" ","","g",$8)"_"cnt"\"") } }' File-1.txt

awk-F'{cnt++;对于(i=1;i而言,完整的解决方案是:

awk -F, '{ cnt++;for (i=1;i<=7;i++) { system("echo \""$i" "$(i+1)"\" >> \"ABC-"$1"_"gensub(" ","","g",$8)"_"cnt"\"") } }' File-1.txt

awk-F,{cnt++;用于(i=1;iWhy是
117
第一列中第一行的缺失?以及
54
第二列中第二行的缺失。这不是缺失,我希望以这种方式排列值。更清楚地说,我希望行的元素如下所示:A B、B C、C D、D进入不同的行,这是问题的一部分。为什么
117
第一列的第一行缺失?第二列的第二行缺失
54
第二列的第二行缺失没有缺失,我希望以这种方式排列值。更清楚地说,我希望行中的元素如下:A B、B C、C D、D进入不同的行,请将您的尝试作为问题的一部分。非常感谢。T他的脚本已按要求生成输出。非常感谢。此脚本已按要求生成输出。