[英]Replace \n with <br /> in bash
[更新的問題]
我有一個變量$CHANGED
,它存儲如下所示的subversion命令的輸出: CHANGED="$(svnlook changed -r $REV $REPOS)"
。
執行svnlook changed -r $REV $REPOS
會將以下內容輸出到命令行:
A /path/to/file
A /path/to/file2
A /path/to/file3
但是,我需要將如下所示格式的輸出存儲在變量$FILES
:
A /path/to/file<br />A /path/to/file2<br />A /path/to/file3<br />
我需要在命令中使用$FILES
來生成電子郵件消息,例如:
sendemail [some-options] $FILES
它應將$FILES
替換$FILES
A /path/to/file<br />A /path/to/file2<br />A /path/to/file3<br />
以便它可以解釋html中斷標簽。
您可以修改hek2mgl的答案以去除第一個<br />
(如果有):
CHANGED="
A /path/to/file
A /path/to/other/file
A /path/to/new/file
"
FILES="$(echo "${CHANGED//$'\n'/<br />}" | sed 's#^<br />##g')"
echo "$FILES"
輸出:
A /path/to/file<br />A /path/to/other/file<br />A /path/to/new/file<br />
sed
):
FILES="$(echo "$CHANGED" | sed ':a;N;$!ba;s#\\n#<br />#g;s#^<br />##g')"
手冊頁的“ 參數擴展”部分是您的朋友。
從...開始
changed="
A /path/to/file
A /path/to/other/file
A /path/to/new/file
"
您可以使用#
和%
擴展名刪除開頭和結尾的換行符:
files="${changed#$'\n'}"
files="${files%$'\n'}"
然后用<br />
替換其他換行符:
files="${files//$'\n'/<br />}"
示范:
printf '***%s***\n' "$files"
***A /path/to/file<br />A /path/to/other/file<br />A /path/to/new/file***
(請注意,我已將所有大寫的變量名更改為小寫。避免為您的本地人使用大寫的名稱,因為它們通常用於通過環境進行通信。)
如果您不喜歡將換行符寫為$'\\n'
,則可以將其存儲在變量中:
nl=$'\n'
files="${changed#$nl}"
files="${files%$nl}"
files="${files//$nl/<br />}"
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.