[英]Bash - Search and append strings
如果我想在文件中搜索一行並將一個字符串附加到該行的末尾,該如何處理? IE瀏覽器:
file=?
我要搜索file=?
並用文件路徑替換問號。 文件路徑位於變量$FILEPATH
file=$FILEPATH
謝謝!
編輯
sed -i -f "s,file=\?,file=$FILEPATH,g"
上面的方法效果很好,是我在尋找什么,但是有沒有辦法替換問號? 使用上面的代碼,如果我具有以下內容:
FILEPATH=/file/path
屬性文件:
something=?
file=?
替換產生:
屬性文件:
something=?
file=/file/path?
有辦法替換?
完全嗎?
我會為此使用sed:
sed -i "s/file=?/file=$FILEPATH/g" your_file
如果您的$FILEPATH
具有/
則使用不同的sed
分隔符,例如:
sed -i "s,file=?,file=$FILEPATH,g"
不要逃避你的問號
[jaypal:~/Temp] cat temp
file=?
file=?
[jaypal:~/Temp] echo $filepath
/usr/bin
[jaypal:~/Temp] sed -e 's_file=?_file='$filepath'_g' temp
file=/usr/bin
file=/usr/bin
另外,為了進行內聯更改,我建議使用以下內容-
[jaypal:~/Temp] sed -ibak 's_file=?_file='$filepath'_g' temp
[jaypal:~/Temp] ls temp*
temp tempbak
[jaypal:~/Temp] cat temp
file=/usr/bin
file=/usr/bin
[jaypal:~/Temp] cat tempbak
file=?
file=?
進行任何更改之前,這將為您的原始文件創建備份。 萬一出問題了,您的原始副本將受到保護。
如果您使用的是Bash,則可以簡單地使用Bash內置函數和替代函數來代替sed:
#!/bin/bash
FILEPATH="/file/path"
while read line; do
echo "${line/file=\?/${line/\?/}$FILEPATH}"
done < yourfile
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.