2013-01-18 73 views
0

從文本文件數據庫格式,從文本文件數據庫

客戶替換當前字符串可用

特德: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?

回答

0

好像$Price是空的。你確定它包含舊價格嗎?如果要更換所有的價格,無論舊值,你可以使用

sed -i "s/$Customer:$HDB:[0-9]*/$Customer:$HDB:$Price2/g" CustomerDB.txt 
0

本人來說我想用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)

here's a good awk intro