请问如何连接两列字符串并在它们之间插入 _ ?
我有一个文件:
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
对于给定的数据,这与上面的操作相同,但如果前两个字段之间存在此类字符,则将匹配更大的类似空格的字符集合(\s
PCRE 符号匹配类似[[: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