我正在嘗試執行以下操作。我想讓用戶爲我提供一個包含ID列表的文件。它看起來像這樣:使用sed替換模板文件中包含引號的變量的文本
41aeb908-dfc7-4cf8-8285-31ca184dc1c5
da877ffa-49bc-4f07-b692-4873870fcb37
a555cdd0-e100-42cb-a355-140de7958b36
該文件可能有10或100這些行在那裏。它會有所不同。然後我想用SQLPlus將它們提供給SQL查詢。爲了做到這一點,我需要在每一行中加上引號,並在每行之後加逗號。
echo "Formatting XIDs for query..."
formattedtxs=`sed -e "s/^/'/g" -e "s/$/'/g" -e "s/$/,/g" $1`
$ 1將具有要處理的文件名。然後我有一個文件,我將把這些文件放入。
select distinct tt.transaction_id||','||tt.entity_id||','||cm.user_id
from transaction_tracker tt, course_membership cm
tt.entity_id = cm.course_id and
tt.transaction_id IN (XXXXXXXX);
我的想法是把那些XXXX作爲我的模板放在那裏,讓sed找到並用我的文本替換它。
echo "Substituting XIDs into query template..."
sed "s/XXXXXXXX/$formattedtxs/" <query.template>query.tmp
它不起作用,因爲它給出錯誤未終止's'命令。我猜這是因爲我的formattedtxs變量本身有單引號。有任何想法嗎?第一個sed命令的結果是這樣的
'41aeb908-dfc7-4cf8-8285-31ca184dc1c5', 'da877ffa-49bc-4f07-b692-4873870fcb37', 'a555cdd0-e100-42cb-a355-140de7958b36', '2b7794f5-9811-4cf3-bd42-1d459d8cb6eb', '6133179e-4e4c-4917-a132-1ee03ab88465', '81343735-e943-4084-ab9f-86f8b5aedfa9',
如果你能擺脫最後一個逗號,獎勵點數。
+10 :)爲令人難以置信的命令替換 - sed內部sed – kobame
真棒解決方案。我在他們中的兩個之間被撕裂。我有一個理由今天進行測試。 – Stefano