Я нашел множество похожих вопросов, но я изо всех сил пытаюсь объединить их вместе для решения моего конкретного случая.У меня есть несколько очень похожих больших текстовых файлов, и я хочу иметь возможность заменять значения между четвертой и пятой точкой с запятой.
Каждый файл заполнен сотнями строк, которые выглядят так:
ABC ;1 ;0 ;36. ;0. ;0. ;0!
DEF ;1 ;0 ;42. ;0.47 ;0.47 ;0!
Мой план состоит в том, чтобы создать скрипт bash, который может проходить через каждый файл и заменять определенные значения.
Например, я хочу заменить «0».после четвертой точки с запятой «0,66» в первой строке.Я также хочу заменить «0,47» после четвертой точки с запятой на «0,99» во второй строке.
Другими словами, я хочу это:
ABC ;1 ;0 ;36. ;0. ;0. ;0!
DEF ;1 ;0 ;42. ;0.47 ;0.47 ;0!
Чтобы это было:
ABC ;1 ;0 ;36. ;0.66 ;0. ;0!
DEF ;1 ;0 ;42. ;0.99 ;0.47 ;0!
Некоторые сложности:
- это грязный файл с различным количеством пробелов (пробелы и табуляции) между точками с запятой
- иногда числа между точками с запятойявляются целыми числами (например, 0), а иногда они являются десятичными (например, «0» или «0,1701»)
Таким образом, на самом деле строки могут выглядеть примерно так:
ABC ;1 ;0 ;36. ;0;0.;0!
DEF ;1;0 ;42. ;0.47 ;0.47 ;0!
В целом меня не волнует «беспорядок» файла.Я просто хочу иметь команду regex, которую я могу использовать для поиска и замены значений между определенными парами точек с запятой для отдельных строк.