合并两列

时间:2012-08-11 10:47:52

标签: merge sed grep while-loop paste

INPUT_FILE

A B C D;X;Y 0
C D E F;Z;X 1

OUTPUT_FILE

A B C D;X;Y;0
C D E F;Z;X;1

我想将input_file的最后一列与第二列合并,并将最后一列的值与“;”分开在倒数第二列(就像input_file的第4列一样)。因此output_file只有一列。每行没有明显的模式,所以我可以使用grep,但我可以使用“while read line”,但不知道如何在每行的最后一个列条目中应用sed。 感谢

3 个答案:

答案 0 :(得分:1)

将最后一个值附加到倒数第二个值,然后删除最后一个值:

awk '{$(NF-1) = $(NF-1) ";" $NF; NF--} 1'

或者,将文件视为分号分隔并拆分最后一列

awk 'BEGIN {FS = OFS = ";"} {gsub(/[[:space:]]+/, FS, $NF)} 1'

答案 1 :(得分:0)

awk '{$NF=";"$NF;print}' input_file>output_file

答案 2 :(得分:0)

sed -e 's/ \(.\)$/;\1/' input_file > output_file

或者您的上一栏可能有多个字符

sed -e 's/ \([[:alnum:]]*\)$/;\1/' input_file > output_file