我是個新手,所以請多多包涵。 :( 在android的bash腳本中,我試圖用另一組存盤在另一個xml檔案中的流/線來替換單一的fonts.xml流,該行是:
<family name="sans-serif"/span>>
而我想用它來代替的是。(它存盤在另一個xml檔案中)
<family name="sans-serif"/span>>
<字體重量="100" style="normal"> Thin.ttf</font>
<字體重量="100" style="italic"> ThinItalic.ttf</font>
<字體重量="300" style="normal"> Light.ttf</font>
<字體重量="300" style="italic">LightItalic.ttf</font>
<字體重量="400" style="normal"> Regular.ttf</font>
<字體重量="400" style="italic"> Italic.ttf</font>
<字體重量="500" style="normal"> Medium.ttf</font>
<字體重量="500" style="italic"> MediumItalic.ttf</font>
<字體重量="700" style="normal"> Bold.ttf</font>
<字體重量="700" style="italic"> BoldItalic.ttf</font>
<字體重量="900" style="normal"> Black.ttf</font>
<字體重量="900" style="italic">BlackItalic.ttf</font>
</family>
<family>
目標是通過magisk模塊將自定義字體作為第一種字體的默認字體,并將Roboto作為后備字體。我怎樣才能用sed將第一個流替換成預期的流集合。我試了幾種基本的sed,但似乎都沒有用!
uj5u.com熱心網友回復:如果你真的想用sed來做這件事,你可以試試這個實作,它可以將新行( )來代替一個未使用的字符(%),執行減法,然后恢復新的行。
#!/bin/bash。
multi_line_sed( )
{
local find_str="$1"/span>
local replace_str="$2"
local unused_char="%"。
# 1.替換出新行(用于stdin和函式引數)
# 2.執行替換。
# 3. 恢復新行 4.
find_str=$(printf "$find_str" | tr "
"/span> "$unused_char"/span>)
replace_str=$(printf "$replace_str"|tr "
"/span> "$unused_char"/span>)
tr "
" "$unused_char" !
sed "s|${find_str}|${replace_str}|g"|
tr "$unused_char"/span> "
"/span>
}
file="fonts.xml"/span>
find_str="<family name="sans-serif" >"
replace_str="$(cat custom_font.xml)"
cat "$file"| multi_line_sed "$find_str" "$replace_str"
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/324968.html
標籤:
