合并两列

合并两列

input_file(列以制表符分隔,仅第 4 列包含空格)

输入

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

输出

A B C D;<>X;<>Y;<>apple=0
C D E F;<>Z;<>X;<>apple=1

我想将 input_file 的最后一列与倒数第二列合并,并用“;”分隔最后一列的值倒数第二列中有一个标签“apple=”(就像 input_file 的第 4 列一样)。因此,output_file 少了一列。还必须保持格式化输出文件的完整性。因为所有列均以制表符分隔,但第 4 列中的值也有空格 (D;<>X;<>Y)。

因此,我想保留输入文件的所有字段分隔符,只想将倒数第二列的最后一列的值与标签(apple=)合并。谢谢

答案1

更改最后一个字段并删除最后一个字段:

$ awk '{$(NF-1)=$(NF-1)";<>apple="$NF;$NF="";}1' OFS="\t" file

答案2

最简单的方法可能是awk

awk 'BEGIN {FS=OFS="\t"} { $4 = $4 ";<>apple="$5; print $1, $2, $3, $4 }'

BEGIN块确保制表符用作输入字段分隔符和输出分隔符。

相关内容