我有一个文本文件,每行有三列文本(字符串)。我想创建一个SQL插入命令,将三个字符串中的每一个替换为一个骨架SQL命令。我在骨架脚本中放置了标记,并使用SED s/placemarker1/first string /但没有成功。有没有更简单的方法来完成这项任务。我用管道来重复“第二个字符串”的过程等。我实际上使用awk来获取字段,但无法转换为实际值。从文本文件到另一个字符串的字符串替换
enter code here
for i in [ *x100* ]; do
if [ -f "$i" ]; then {
grep -e "You received a payment" -e "Transaction ID:" -e "Receipt No: " $i >> ../temp
cat ../temp | awk 'NR == 1 {printf("%s\t",$9)} NR == 2 {printf("%s\t",$9)} NR == 3 {printf("%s\n",$3)}' | awk '{print $2,$1,$3}' | sed 's/(/ /' | sed 's/)./ /' >> ../temp1
cat temp1 | awk 'email="$1"; transaction="$2"; ccreceipt="$3";'
cat /home/linux014/opt/skeleton.sql | sed 's/EMAIL/"$email"/' | sed 's/TRANSACTION/"$transaction"/' | sed 's/CCRECEIPT/"$ccreceipt"/' > /home/linux014/opt/new-member.sql
rm -f ../temp
} fi
done
我无法弄清楚如何获得的,而不是插入我的字符串变量的名称值。
样品入口(一行只):
[email protected] 2w4e5r6t7y8u9i8u7 1111-2222-3333-4444
样品实际输出:
INSERT INTO users (email,paypal_tran,CCReceipt) VALUES ('"$email"','"$transaction"','"$ccreceipt"');
优选输出:
INSERT INTO users (email,paypal_tran,CCReceipt) VALUES ('[email protected]','2w4e5r6t7y8u9i8u7','1111-2222-3333-4444');
示例输入和预期输出将帮助 –