從文本文件數據庫格式,從文本文件數據庫
客戶替換當前字符串可用
特德:RM4:34:197:101
的bash shell腳本,
read -p $'Price: ' Price2
sed -i "s/$Customer:$HDB:$Price/$Customer:$HDB:$Price2/g" CustomerDB.txt
當我鍵入43時,數據庫返回
特德:令吉:4334:197:101
如何更換它是43而不是34?
從文本文件數據庫格式,從文本文件數據庫
客戶替換當前字符串可用
特德:RM4:34:197:101
的bash shell腳本,
read -p $'Price: ' Price2
sed -i "s/$Customer:$HDB:$Price/$Customer:$HDB:$Price2/g" CustomerDB.txt
當我鍵入43時,數據庫返回
特德:令吉:4334:197:101
如何更換它是43而不是34?
好像$Price
是空的。你確定它包含舊價格嗎?如果要更換所有的價格,無論舊值,你可以使用
sed -i "s/$Customer:$HDB:[0-9]*/$Customer:$HDB:$Price2/g" CustomerDB.txt
本人來說我想用awk,而不是sed的,因爲它解析行成單獨的領域automaitcally。
read -p "customer: " cust
read -p "new price: " price2
awk -F : -v OFS=: -v cust=$cust -v price=$price2 '{ if($1==cust){ $3=price } ; print}' file
所以發生了什麼?
井-F:設置:作爲字段分隔符 -v VAR = VAL設置一些變量在awk腳本在這種情況下使用OFS和卡斯特和價格變量
的實際工作awk腳本將第一個字段($ 1)與cust var進行比較。如果它們相同,則它將第三字段設置爲等於價格變量。
那麼我們打印出通過OFS var值分隔的所有字段(空間默認情況下,但我們已經覆蓋到:'S)