如何将列输出合并到上一列的行尾?

时间:2019-06-13 12:38:24

标签: linux bash awk sed

我有一个包含三列的.csv文件,我需要将第2列的值与第1列的行的末尾合并。

.csv文件包含数千行,并且需要为每一行完成。

我尝试使用awk,但是我发现很难正确获取代码

cat file.csv | awk '{print $1, $2}' 

awk '{if ($2!= " ") {print $1+$2 }}'

These of course don't work

样本输入:

用于产生实际输出的命令很简单:     猫test.csv

[2,4,5,6,2,34,61,32,34,54,34,       22]     0.144354
[3,4,6,4,5,6,7,1,2,3,4,53,23,       34]     0.332453
[2,43,6,2,1,2,5,8,9,0,8,6,34,       21]     0.347643

所需的输出:

             col1                       col2
[2,4,5,6,2,34,61,32,34,54,34,22]     0.144354
[3,4,6,4,5,6,7,1,2,3,4,53,23,34]     0.332453
[2,43,6,2,1,2,5,8,9,0,8,6,34,21]     0.347643

3 个答案:

答案 0 :(得分:2)

将“逗号后跟一个或多个空格”替换为“逗号”:

sed 's/, \{1,\}/,/' file.csv
sed 's/, */,/g' file.csv

将列$ 1和$ 2打印为$ 1(可选,用制表符分隔):

awk '{print $1 $2, $3}' OFS='\t' file.csv

答案 1 :(得分:0)

您可以尝试:

class Demo{
    public static void main(String args[]){
        int arr[]={321,321,321,43,65,234,56,-1,4,45,-67};
        int max=arr[0];
        int len=arr.length;
        for(int i=0;i<len;i++){
            if(max<arr[i]){
                max=arr[i];
            }
        }

        System.out.println("Max value is "+max);

        int secMax=arr[0];
        for(int j=0;j<len;j++){
            if(max>arr[j]){
                if(secMax<arr[j]){
                    secMax=arr[j];
                }
                else if(secMax>arr[j]){
                    secMax=arr[j];
                }

            }
            else if(max==arr[j]){
                //
            }

        }
                System.out.println("Sec Max value is "+secMax);

    }
}

答案 2 :(得分:0)

当您不想要空格时,我只会在逗号后面看到空格。

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input type="file" id="fileSomething1" />
<input type="file" id="fileSomething2" />
<button id="butn">click</button>

添加$: sed -E 's/,\s+/,/' file.csv [2,4,5,6,2,34,61,32,34,54,34,22] 0.144354 [3,4,6,4,5,6,7,1,2,3,4,53,23,34] 0.332453 [2,43,6,2,1,2,5,8,9,0,8,6,34,21] 0.347643 (在{{1}之后的 之后)以进行就地编辑。

-i