簡體   English   中英

BASH:使用sed替換字符串中的組

[英]BASH: replace groups in a string using sed

內容包含從文件讀取的字符串。 我要做的是用捕獲組和換行符替換捕獲組。 但是我不知道如何。

這有效

contents=$(echo $contents | sed -e 's|/$(#.*)\n||g')

但這不是

contents=$(echo $contents | sed -e 's|/$(#.*)\n|\1\n|g')
ERROR: sed: -e expression #1, char 18: invalid reference \1 on `s' command's RHS

而且這也不

contents=$(echo $contents | sed -er 's|/$(#.*)\n|\1\n|g')
ERROR: sed: can't read s|/$(#.*)\n|\1\n|g: No such file or directory

如果content是多行,則$content必須在雙引號之間,以避免分裂: $在正則表達式中有特殊含義,它是行錨的結尾,必須轉義。 組括號必須轉義( -r擴展正則表達式除外)。 \\n不匹配$也可以代替。

content=$(echo "$content"|sed -e 's|/\$\(#.*\)$|\1|g')

暫無
暫無

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

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