簡體   English   中英

Bash-搜索並追加字符串

[英]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.

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