Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Awk 如何在最后一列的每一行中添加一个选项卡?_Awk_Sed_Tabs - Fatal编程技术网

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
的信息。