我需要处理文件的帮助,该文件包含多行以逗号分隔的元素。该文件如下所示:
文件-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
我想将每行的逗号分隔值转换为由制表符分隔的两列,如下所示:
OUTPUT_FILE:
54 75
75 19
19 123
123 74
74 15
15 10
10 117
同样,每行保存到一个单独的文件中,该文件以原始行的第一个和最后一个数字命名,后跟行号,如下所示
Output_file 1
ABC-54_117-1
54 75
75 19
19 123
123 74
74 15
15 10
10 117
Output_file 2
ABC-54_117-2
54 75
75 19
19 45
45 74
74 15
15 10
10 117
以及其他两行也是如此。在这种情况下,它是一个文件中的4行,但我有很少的文件有很多行,需要以相同的方式处理。我用awk,sed尝试过脚本,但根本无法破解它。
任何帮助将不胜感激。
答案 0 :(得分:3)
您可以使用此awk
:
awk -F', +' '{f=$1"_"$NF"_"NR; for (i=1; i<NF; i++){print $i,$(i+1)>f}}' OFS='\t' file
输出:
$ ls
54_117_1 54_117_2 54_117_3 54_117_4
$ cat 54_117_2
54 75
75 19
19 45
45 74
74 15
15 10
10 117
答案 1 :(得分:0)
完整的解决方案是:
32
我们首先为File-1.txt中的每条记录增加cnt。我们知道每行中有8个逗号分隔字段,因此我们使用8循环的for循环,并在循环内部使用system命令将变量对回显到使用cnt变量和第8个分隔字段构造的文件。函数gensub用于删除第8个字段中的任何空格。