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

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

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

public class Test {

}

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

public class Test 
{

}

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

sed -e '/[a-z)] [{]|[a-z)][{]/s/{/N{/g' *.java -r 
0
30.11.2016, 16:03
2 ответа

Поскольку вы делаете это на 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

1
28.01.2020, 02:34

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

sed -e s/{/\\n{/g *.java

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

sed -i s/{/\\n{/g *.java
1
28.01.2020, 02:34

Теги

Похожие вопросы