Text-Processing

如何使用 sed 將打開的括號從行尾替換為新行?

  • November 30, 2016

我有很多文件從行尾打開了錯誤的 { 括號,需要按條件將其替換為新行[a-z)] [{]|[a-z)][{].

輸入範例:

public class Test {

}

預期輸出:

public class Test 
{

}

我的解決方案有什麼問題?

sed -e '/[a-z)] [{]|[a-z)][{]/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 -e s/{/\\n{/g *.java

它將{用 a替換 any\n{並在螢幕上顯示輸出。要替換文件中的文本,您可以使用就地選項

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

引用自:https://unix.stackexchange.com/questions/327063