将列添加到csv文件

时间:2015-05-26 20:37:00

标签: bash

我有两个文件,我需要捕获文件的最后一列并附加到其他文件。

文件1

1 2 3
1 2 3
1 2 3

file2的

5 5
5 5
5 5

初步提案

#!/usr/bin/env bash

column=$(awk '{print $(NF)}' $file1)
paste -d',' $file2 < $column

预期结果

file2的

5 5 3
5 5 3
5 5 3

但是,此脚本尚未运行

OBS:我不知道文件中有多少列。我需要更通用的解决方案。

4 个答案:

答案 0 :(得分:3)

您可以使用此paste命令:

paste -d " " file2 <(awk '{print $NF}' file1)
5 5 3
5 5 3
5 5 3

答案 1 :(得分:1)

将file1的最后一列追加到file2:

paste -d " " file2 <(rev file1 | cut -d " " -f 1 | rev)

输出:

5 5 3
5 5 3
5 5 3

答案 2 :(得分:0)

将文件1的第二列粘贴到文件2:

   while read line; do 
       read -u 3 c1 c2 c3; 
       echo $line $c2; 
   done < file2 3< file1

答案 3 :(得分:0)

您也可以使用Perl:

$ paste -d ' ' file2.txt <(perl -lne 'print $1 if m/(\S+)\s*$/' file1.txt)
5 5 3
5 5 3
5 5 3

或者grep:

$ paste -d ' ' file2.txt <(grep -Eo '(\S+)\s*$' file1.txt)
5 5 3 
5 5 3
5 5 3