Как заменить открытые скобки с конца строки на новую строку с помощью sed?

У меня много файлов с неверными открытыми {скобками от конца строки и их нужно заменить на новую строку conditon [az)] [{]|[az)][{].

пример ввода:

 public class Test { } 

ожидаемый результат:

 public class Test { } 

Что не так в моем решении?

 sed -e '/[az)] [{]|[az)][{]/s/{/N{/g' *.java -r 

Так как вы делаете это на Mac, это sed сделает это: sed 's/{$/\'$'\n{/'

Пример:

 echo "public class Test { }" | sed 's/{$/\'$'\n{/' public class Test { } 

Если вы хотите отредактировать файл «на месте», выполните следующую команду:

 sed -i "" 's/{$/\'$'\n{/' java 

Результат:

 cat java public class Test { } 

Вот ссылка на вставку новых строк в sed на Mac.


Протестировано в OS X 10.11.6

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

 sed -es/{/\\n{/g *.java 

он заменит любой { на a \n{ и покажет вывод на экране. Чтобы заменить текст в файлах, вы можете использовать опцию на месте

 sed -is/{/\\n{/g *.java