簡體   English   中英

使用 bash 腳本搜索和替換包含點、單引號和雙引號的字符串

[英]Search and Replace strings containing dot, single and double quotes using bash script

我需要在文件夾的所有文件中搜索字符串cf['stack.over.flow']並使用 bash 腳本將其替換為STACK_OVER_FLOW 我用sed嘗試了很多方法,但在 escaping 中沒有運氣,單引號和點。 請幫忙。

編輯:如何處理帶有雙引號的字符串。 例如: cf["stack.over.flow"]

對於像cf['stack.over.flow']這樣的雙引號,您可以使用:

sed "s/cf\['stack\.over\.flow']/STACK_OVER_FLOW/" your_dir/*

對於像cf["stack.over.flow"]這樣的雙引號,您可以使用:

sed 's/cf\["stack\.over\.flow"]/STACK_OVER_FLOW/' your_dir/*

鏈接命令並在sed之后和命令之前添加-i將就地執行替換:

sed -i "s/cf\['stack\.over\.flow']/STACK_OVER_FLOW/" your_dir/* && 
sed -i 's/cf\["stack\.over\.flow"]/STACK_OVER_FLOW/' your_dir/*

編輯:@Jetchisel 提供了一種使用單個 sed 命令的方法:

sed -i "s/cf\[[\"']stack\.over\.flow[\"']\]/STACK_OVER_FLOW/" your_dir/*

它的工作方式是匹配:

  • 開場cf\[
  • 后跟(轉義)雙引號或單引號: [\"']
  • 后跟 'stack.over.flow' 字符串(轉義. ): stack\.over\.flow
  • 后跟(轉義)雙引號或單引號: [\"']
  • 后跟結束轉義方括號: \]
  • 然后用'STACK_OVER_FLOW'替換以上所有內容

暫無
暫無

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

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