-2
シェルスクリプトの出力に関する問題に直面しました。ここで私は、出力 が "INSERT INTO UserRating(著、コメント、日付、全体的に、バリュー、部屋、場所、清潔さ、チェックイン、サービス、商務)" >> hotelreviews.sqlをエコーすることができ、コードシェルスクリプトの結果をファイルに出力
read_each_user_rating(){
TOTAL_RATING_NUMBER="$(grep -c '<Author>' $1)" #Find how many rating in each file
ALL_AUTHOR="$(grep '<Author>' $1 | sed -e 's/<Author>//'| tr -d '\r')"
ALL_COMMENT="$(grep '<Content>' $1 | sed -e 's/<Content>//'| tr -d '\r')"
ALL_DATE="$(grep '<Date>' $1 | sed -e 's/<Date>//'| tr -d '\r')"
ALL_RATING_FILE="$(grep '<Overall>' $1 | sed -e 's/<Overall>//'| tr -d '\r')"
ALL_VALUE="$(grep '<Value>' $1 | sed -e 's/<Value>//'| tr -d '\r')"
ALL_ROOMS="$(grep '<Rooms>' $1 | sed -e 's/<Rooms>//'| tr -d '\r')"
ALL_LOCATION="$(grep '<Location>' $1 | sed -e 's/<Location>//'| tr -d '\r')"
ALL_CLEANLINESS="$(grep '<Cleanliness>' $1 | sed -e 's/<Cleanliness>//'| tr -d '\r')"
ALL_CHECKIN="$(grep '<Check in/front desk>' $1 | sed -e 's/<Check in/front desk>//'| tr -d '\r')"
ALL_SERVICE="$(grep '<Service>' $1 | sed -e 's/<Service>//'| tr -d '\r')"
ALL_BUSSINESS="$(grep '<Bussiness service>' $1 | sed -e 's/<Bussiness service>//'| tr -d '\r')"
for ((COUNTER_A=1;COUNTER_A<=$TOTAL_RATING_NUMBER;COUNTER_A++))
do
echo "INSERT INTO UserRating (Author,Comment,Date,Overall,Value,Rooms,Locations,Cleanliness,Checkin,Service,Bussiness)" >> hotelreviews.sql
echo $($ALL_AUTHOR | sed "${COUNTER_A}q;d") >> hotelreviews.sql
done
}
read_each_user_rating $1
ですファイル。しかし、なぜ私は "echo $($ ALL_AUTHOR | sed" $ {COUNTER_A} q; d ")>> hotelreviews.sql"ファイルを出力することができますか?
を、あなたは何を期待していますか?実際に何が起こるのですか?私はあなたの '$ 'のうちのいくつかを逃れる必要があると推測しています。 – John3136
'grep |各行の 'sed'部分は' sed -n -e 's/ // p''に置き換えることができます。これは、置換が行える行だけを出力します。 –
Wildcard