连接两列字符串

连接两列字符串

请问如何连接两列字符串并在它们之间插入 _ ?

我有一个文件:

L  o     45
OK kklkj 5

期望的结果是:

L_o      45
OK_kklkj 5

我试过:

awk '{printf "%12s %22.2f\n", $1+'_'+$2, $3}' file

它将字符串转换为数字。谢谢。

答案1

使用sed

sed 's/[[:blank:]]\{1,\}/_/' file

这会将第一次出现的一个或多个连续空格(空格或制表符)替换为单个下划线字符。

使用 GNU sed,这可以缩短为

gsed -E 's/\s+/_/' file

对于给定的数据,这与上面的操作相同,但如果前两个字段之间存在此类字符,则将匹配更大的类似空格的字符集合(\sPCRE 符号匹配类似[[:space:]],其中还包括垂直制表符、回车符) -回车符和换页符)。

给定问题中的数据,这会产生以下输出:

L_o     45
OK_kklkj 5

答案2

使用awk

$ awk '{$0=$1"_"$2FS$NF}1' input_file | column -t
L_o       45
OK_kklkj  5

答案3

这应该做(来源):

awk '{$1=(NR==1?"ID":$1"_"$2); $2=""}1' file

将会有额外的空白,如果需要,可以在以后对其进行标准化。

相关内容