0
我問了一個類似的問題,但答案似乎給了我一些問題。我的總體目標是能夠從特定數據庫中刪除某個記錄。測試一個模式是否屬於特定數據庫
databases.txt包含:
class grades
schema.txt包含:
grades name test1 test2 test3
class.db包含:
Nick 79 84 85
You 24 83 52
Her 84 98 55
所需的輸入將是:
./del.sh class test2 84
我的目標是刪除test2和class所屬的db中'84'的所有行。
我使用驗證數據庫的存在:
awk '{ print $1 }' databases.txt >> temp.txt
if grep -Fxq $1 temp.txt
then
rm temp.txt
touch temp.txt
else
echo "Database name error. Exiting."
rm temp.txt
exit 1
fi
我目前的問題是驗證該test2的屬於屬於由用戶輸入數據庫中的模式,並且該字段內不存在該架構會打印一條錯誤消息。
先前的迴應,我給出了:
awk 'NR==FNR{a[$1]=$0;next}a[$2]~/$2/{print $0}' schemas.txt databases.txt
然而,它似乎並沒有真正檢查得當,它打印的數據庫文件,這是不必要的。我對中刪除記錄的代碼是一種shotty的現在藏漢:
var=$(grep -c $3 $1.db)
delrec=$3
echo "There were" $var "records deleted from the $1 database."
sed -i "/$delrec/d" $1.db
嚴重的是,我不會使用scripts/sed/awk來完成這樣的任務。 Perl或Python將是我的選擇。在腳本工具中做輸入驗證,轉義,引用和類似的事情是非常尷尬的(PITA)。 –
我同意,但我確實需要在shell腳本中編寫它。 = / – Nicktard