
У меня есть адресные строки, которые (из-за плохого начального программирования) допускали слишком много ввода свободного текста. В ходе очистки этого унаследованного беспорядка я заметил, что в конце адресных полей часто (а часто и нет) есть запятые, от которых я хочу избавиться.
Проблема в том, что (опять же, часто!) те, кто вводит данные (оплачиваемые построчно...), вводят строки вроде:
`address_1_string , `
Это address_1_string, за которым следуют два пробела, за которыми следует запятая, которую я хочу удалить, а затем еще два пробела. Количество пробелов (до или после запятой) произвольно, обычно от 0 до 5. Проблема еще больше усугубляется тем фактом, что само по address_string_1
себе может иметь внутренние (допустимые) запятые.
Итак, я ищу регулярное выражение, которое доходит до конца строки, удаляет все конечные пробелы, первую запятую, а затем все остальные пробелы, пока не будет найден допустимый символ [a-zA-Z0-9] ([:alphanum:]?).
У меня есть понятия о регулярных выражениях, но это выше моей квалификации. Это мой первый пост на Stackexchange, так что если я не туда попал, пожалуйста, перенаправьте меня. TIA.
решение1
< input sed 's/[[:space:],]*$//' > output
Удалил бы все пробелы и запятые в конце строки.
Для редактирования файла на месте в некоторых sed
реализациях предусмотрена -i
опция, созданная по образцу perl
опции -i
:
sed -i 's/[[:space:],]*$//' input-and-output # GNU, busybox, NetBSD, OpenBSD
sed -i '' 's/[[:space:],]*$//' input-and-output # FreeBSD, macOS