如何仅在最后一列中的每一行中添加 TAB?
How can I add a TAB to every line into the very last column only?
我怎样才能只在最后一列的每一行中添加一个制表符,而保持其余部分不变?
之前:
hgege uezeze uge 847.884 uehe 76,34 84,89
jewhwehew\theghe..846,65 93,48
jerhewgpwi wquzqwgfedcf\tjwegew...75,93 83
之后:
hgege uezeze uge 847.884 uehe 76,34\t84,89
jewhwehew\theghe..846,65\t93,48
jerhewgpwi wquzqwgfedcf\tjwegew...75,93\t83
你可以使用 awk 做到这一点:
awk '{s=$NF;--NF;printf "%s\t%s\n",[=10=],s}' file
将最后一个字段保存到变量s
中。递减 NF
,以便从 [=14=]
中删除最后一个字段。打印 [=14=]
,然后是制表符,然后是最后一个字段。
使用 GNU sed,这里有一个替代方法,它保留了行中以前的选项卡:
sed -r 's/(.*)[[:space:]]+(.*)/\t/' file
它贪婪地匹配所有内容直到行中的最后一个空格,捕获前后的内容。替换是第一部分,然后是制表符,然后是最后一部分。
我怎样才能只在最后一列的每一行中添加一个制表符,而保持其余部分不变?
之前:
hgege uezeze uge 847.884 uehe 76,34 84,89
jewhwehew\theghe..846,65 93,48
jerhewgpwi wquzqwgfedcf\tjwegew...75,93 83
之后:
hgege uezeze uge 847.884 uehe 76,34\t84,89
jewhwehew\theghe..846,65\t93,48
jerhewgpwi wquzqwgfedcf\tjwegew...75,93\t83
你可以使用 awk 做到这一点:
awk '{s=$NF;--NF;printf "%s\t%s\n",[=10=],s}' file
将最后一个字段保存到变量s
中。递减 NF
,以便从 [=14=]
中删除最后一个字段。打印 [=14=]
,然后是制表符,然后是最后一个字段。
使用 GNU sed,这里有一个替代方法,它保留了行中以前的选项卡:
sed -r 's/(.*)[[:space:]]+(.*)/\t/' file
它贪婪地匹配所有内容直到行中的最后一个空格,捕获前后的内容。替换是第一部分,然后是制表符,然后是最后一部分。