2016-10-03 19 views
0

我遇到tr命令将文件从.csv转换为正常excel的问题。如何在tr命令中将尾部减去前导减号

我的输入文件是用。|分隔的.csv文件。

我已经使用了下面的命令。

tr '|' ',' <TEST.csv> OUTPUT.csv 

执行tr命令后。

Input: 
A|101 
2|202- 

Output: 
A 101 
2 202- 

Expected output: 
A 101 
B -202 

任何人都可以帮助我翻译一个.csv文件到正常excel字段前使用tr命令减号。

或tr执行后有什么方法可以使尾部减去前导减号。

或任何其他可能的脚本,使拖尾减去前导减号。

在此先感谢。

+0

你为什么会认为'tr'会改变任何东西的位置? 'tr'以逐个字符为基础运行。它只能做1件事,而且,(非常高巴洛克式的英语)是'** tr ** ansliterate'。 ;-) 祝你好运。 – shellter

回答

1

你可以尝试这样的事情;

tr '|' ' ' < TEST.csv | awk '{for (i=1; i<=NF; i++) if ($i ~ /-$/) $i = "-"substr($i,1,length($i)-1); print }' > OUTPUT.csv 

示例;

[email protected]:/tmp$ cat TEST.csv 
A|101 
2|202- 

[email protected]:/tmp$ tr '|' ' ' < TEST.csv | awk '{for (i=1; i<=NF; i++) if ($i ~ /-$/) $i = "-"substr($i,1,length($i)-1); print }' 
A 101 
2 -202 
+0

我已经执行了上面的脚本,但仍然可以在尾部找到减号。我的客户要求是在前端得到负号。请提供一些UNIX脚本来转换.csv文件,并在前端加减号 – Rat