2017-02-09 9 views
1

У меня есть файл csv, и в ряде полей есть числа с плавающей запятой, где отрицательные в конце номера, я хочу, чтобы они были изменены так, чтобы иметь минус/отрицательный символ спереди.Использование Sed для чисел с отрицательными знаками

т.е.

23.4954-,23.12- 

0.23-,16.5453 

2495.1-,12,134- 

Я хотел бы те читать

-23.4954,-23.12 

-0.23,16.5453 

-2495.1,-12,134 

Из 20 колонн и несколько тысяч строк, есть, вероятно, около 80 экземпляров на файл, но это реальная боль чтобы просто пойти и заменить их

Я надеялся использовать sed на файлы, чтобы изменить их, если это возможно.

Любая помощь действительно оценена.

+0

был этот '12,134-' опечатка? ('12.134-') – RomanPerekhrest

ответ

0

Используйте следующий подход:

sed -ri 's/([0-9.]+)-/-\1/g' filepath 

-r (--regexp-extended) - позволяет использовать расширенные регулярные выражения, а не базовые регулярные выражения

-i - опция, которая позволяет изменить файл в месте

+0

Спасибо, очень понравилось! –

+0

@ArseneWenger, добро пожаловать – RomanPerekhrest

0

Вы можете использовать эту команду: sed

sed -E 's/([0-9.]+)-/-\1/g' file 

Это перемещает - знак перед числом, состоящим из 0-9. символов.

+0

Если ваш 'sed' не имеет опции' -E', попробуйте '-r' вместо этого или используйте переносимый скрипт' 's/\ ([0-9.] [0- 9.] * \) -/- \ 1/g'' без опции. – tripleee