将两列合并为新列并打印所有列

use*_*940 7 awk

我想合并第 1 列和第 2 列,并将它们添加为数据框中的新列。然后我想打印所有旧列和新创建的列。我可以使用下面的脚本组合列,但不确定如何打印所有列,而不仅仅是组合的列:

awk ' { print $1 $2 "_" $NF } ' input_file
Run Code Online (Sandbox Code Playgroud)

c1 c2 c3
12 1  12
4 4 57
Run Code Online (Sandbox Code Playgroud)

出去

c1 c2 c3 c4
12 1  12 12_1
4 4 57 4_4
Run Code Online (Sandbox Code Playgroud)

The*_*ird 4

如果你想打印_字段 1 和 2 之间的内容,那么第一个输出将c1 c2 c3 c1_c2c1 c2 c3 c4

您可以在末尾添加一个值为$1和 的列$2,然后打印整行:

awk ' { $(NF+1) = $1"_"$2 }1' input_file
Run Code Online (Sandbox Code Playgroud)

输出

c1 c2 c3 c1_c2
12 1 12 12_1
4 4 57 4_4
Run Code Online (Sandbox Code Playgroud)

或者您可以打印整行,然后打印字段$1$2

awk '{print $0, $1"_"$2}' input_file
Run Code Online (Sandbox Code Playgroud)

输出

c1 c2 c3 c1_c2
12 1  12 12_1
4 4 57 4_4
Run Code Online (Sandbox Code Playgroud)