簡體   English   中英

如何用sed文件中的某些模式替換單詞?

[英]How to replace the words with certain pattern in a file with sed?

我知道如何用sed代替單詞。 運用

sed -i 's/[old_text]\b/[new_text]/g'

可以用new_text替換old_text。

我想做的是在數據庫架構中用char(10)替換nchar(10)或nchar(10)或nchar(10)...。

CREATE TABLE Human
(
    ID int,
    Name nchar(10)  --> should be replace with char(10)
);

格式很難確定。

我不知道如何設置sed正則表達式來對此進行存檔。

您可以在任何地方使空格為可選:

sed -i.bak 's/\<nchar *( *\([0-9]*\) *)/char(\1)/g' file.sql
  • \\<用於單詞邊界。

或者,您可以在vi中打開文件並在vi cmd模式下使用以下命令

%s/nchar/char/g

一次替換整個文件

一次性替換所有出現的nchar。

並在更換所有之前進行檢查

%s/nchar/char/gc

y是

n表示不更換

用於替換所有休息

使用sed和擴展的regex -r (為清楚起見)。 另外-i表示“就地”,因此無需創建其他輸出文件

sed -i sqlfile -r -e "s/nchar\s*\(\s*([0-9]+)\s*\)/char(\1)/g"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM