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
块确保制表符用作输入字段分隔符和输出分隔符。