选择一列的部分并粘贴为新列

选择一列的部分并粘贴为新列

我有一个以下格式的文件:

# Comment 
# Comment 
# Comment
@ Title
@ Label 
@ Label
1       2
2       5
3       7
&
1       7
2       4
3       9
&

因此第一列会重复,而第二列会发生变化。它们在第一列中用“&”分隔,在第二列中用空格分隔。可能有数千个这样的部分。我想剪切第二列的部分并将其粘贴为新列,因此在这种情况下:

# Comment 
# Comment 
# Comment
@ Title
@ Label 
@ Label
1     2     7
2     5     4
3     7     9

然后我可以更轻松地绘制所有列的图表。我也不关心第一行,以防更容易删除它们或将它们留在那里,这并不重要。

答案1

运行:

cat << EOF | awk '
$1 == "#" || $1 == "@" { print; next }
$1 != "&" { result[$1] = (result[$1] ? result[$1] : $1) "\t" $2 }
END { for (i in result) print result[i] }
'
# Comment 
# Comment 
# Comment
@ Title
@ Label 
@ Label
1       2
2       5
3       7
&
1       7
2       4
3       9
&
EOF

或者您可以使用该文件文件名与输入数据。在这种情况下运行:

awk '
$1 == "#" || $1 == "@" { print; next }
$1 != "&" { result[$1] = (result[$1] ? result[$1] : $1) "\t" $2 }
END { for (i in result) print result[i] }
' filename

在这两种情况下,您都会得到结果:

# Comment 
# Comment 
# Comment
@ Title
@ Label 
@ Label
1   2   7
2   5   4
3   7   9

它将适用于任意数量的列。

相关内容