Awk 如何在最后一列的每一行中添加一个选项卡?
我怎样才能只在最后一列的每一行中添加一个制表符,而保持其余部分不变 之前:Awk 如何在最后一列的每一行中添加一个选项卡?,awk,sed,tabs,Awk,Sed,Tabs,我怎样才能只在最后一列的每一行中添加一个制表符,而保持其余部分不变 之前: 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,4
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",$0,s}' file
将最后一个字段保存到变量s
中。减量NF
因此最后一个字段从$0
中删除。打印$0
,后跟制表符,后跟最后一个字段
使用GNU sed,这里有一个保留行中先前选项卡的替代方法:
sed -r 's/(.*)[[:space:]]+(.*)/\1\t\2/' file
它贪婪地将所有内容匹配到行的最后一个空格,捕获前后的内容。替换的部分是第一部分,后面是制表符,后面是最后一部分。846,65(类似于846.65)然后有一个空格,下一个数字是93,48(类似于93.48)。对不起@我猜输入中的\t
表示制表符,最后一行的..
表示它被缩短了。谁知道呢,也许在83号之前有一个空间,这样就行了!显然,这要由OP来澄清。感谢您提供有关递减NF
的信息。