2016-10-03 2 views
0

У меня возникла проблема с командой tr для перевода файла с .csv на нормальный excel.Как привести трейлинг минус в ведущую минус в команде tr

Мой входной файл .csv-файл ограничен символом |.

Я использовал команду ниже.

После выполнения команды tr.

Input: 
A|101 
2|202- 

Output: 
A 101 
2 202- 

Expected output: 
A 101 
B -202 

Может кто-нибудь помочь мне перевести файл .csv в нормальный первенствует со знаком минус перед полем с помощью команды тр.

или после выполнения tr есть какой-либо способ довести минус минус до минус минус.

или любой другой возможный сценарий, чтобы привести конечный минус к минус минус.

Заранее спасибо.

+0

Почему вы думаете, что 'tr' изменит положение всего? 'tr' работает на основе char-by-char. Он может делать только 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

Смежные вопросы