首页 > 解决方案 > 如何在新文件中转置值和输出结果

问题描述

我的数据:

"1,2,3,4,5,64,3,9",,,,,1,aine
"2,3,4,5",,,,,3,bb
"3,4,5,6,6,2",,,,,2,ff

我必须像这样在“....”分隔符内转置值:如何使用 shell 将值两个两个转置?

并在文件名 = (last-1) 列数字的新文件中输出结果(2 列)。我必须为输入文件的每一行转置。

我想要什么:

$ ls

1 2 3 4 5 6 7 8

示例:猫 1

 1 2
 3 4
 5 64 
 3 9

猫 2:

3 4
5 6
6 2

猫 3:

2 3
4 5

奖励:如果我可以将每个最后的单词(最后一列)作为新文件的标题,那将是完美的。

标签: linuxbashshell

解决方案


好的,花了一些时间,但我终于用下面的代码解决了你的问题:

#!/bin/bash

while read -r LINE; do
    FILE_NAME=$(echo {$LINE##*,,,,,} | cut -d ',' -f 1 | tr -d "\"")
    DATA=$(echo ${LINE%%,,,,,*} | tr -d "\"" | tr "," " ")
    touch $FILE_NAME
    i=1
    for num in $DATA ;do
        echo -n "$num"
        if [[ $(($i%2)) == 0 ]]; then
            echo ""
        else
            echo -n " "
        fi
        i=$((i+1))
    done > $FILE_NAME
done < input.txt

在我的解决方案中,我想您的输入应该放在文件中input.txt,并且您的所有输入行都,,,,,作为分隔符。与您的示例输入一起工作就像一个魅力。


推荐阅读