Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 从文本文件到另一个字符串的字符串替换_Sql_String_Bash_Awk_Sed - Fatal编程技术网

Sql 从文本文件到另一个字符串的字符串替换

Sql 从文本文件到另一个字符串的字符串替换,sql,string,bash,awk,sed,Sql,String,Bash,Awk,Sed,我有一个文本文件,每行有三列文本(字符串)。我想通过将三个字符串中的每一个替换为一个骨架SQL命令来创建一个SQL insert命令。我已经在骨架脚本中放置了标记,并使用了SED s/placemarker1/first string/,但没有成功。有没有更简单的方法来完成这项任务。我使用管道重复“第二个字符串”等的过程。我实际上使用awk获取字段,但无法转换为实际值 enter code here for i in [ *x100* ]; do if [ -f "$i" ];

我有一个文本文件,每行有三列文本(字符串)。我想通过将三个字符串中的每一个替换为一个骨架SQL命令来创建一个SQL insert命令。我已经在骨架脚本中放置了标记,并使用了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
我不知道如何获取值,而不是插入到字符串中的变量的名称

样本输入(仅一行):

实际输出样本:

INSERT INTO users (email,paypal_tran,CCReceipt) VALUES ('"$email"','"$transaction"','"$ccreceipt"');
首选输出:

INSERT INTO users (email,paypal_tran,CCReceipt) VALUES ('catdog@gmail.com','2w4e5r6t7y8u9i8u7','1111-2222-3333-4444');
将示例输入转换为首选输出。它应该适用于多行输入

编辑

您在此行中使用的变量:

cat temp1 | awk 'email="$1"; transaction="$2"; ccreceipt="$3";'
仅对awk和此命令可见。它们不是shell变量。 另外,在
sed
命令中,删除这些单引号,然后可以获得以下值:

sed "s/EMAIL/$email/"
将示例输入转换为首选输出。它应该适用于多行输入

编辑

您在此行中使用的变量:

cat temp1 | awk 'email="$1"; transaction="$2"; ccreceipt="$3";'
仅对awk和此命令可见。它们不是shell变量。 另外,在
sed
命令中,删除这些单引号,然后可以获得以下值:

sed "s/EMAIL/$email/"
将示例输入转换为首选输出。它应该适用于多行输入

编辑

您在此行中使用的变量:

cat temp1 | awk 'email="$1"; transaction="$2"; ccreceipt="$3";'
仅对awk和此命令可见。它们不是shell变量。 另外,在
sed
命令中,删除这些单引号,然后可以获得以下值:

sed "s/EMAIL/$email/"
将示例输入转换为首选输出。它应该适用于多行输入

编辑

您在此行中使用的变量:

cat temp1 | awk 'email="$1"; transaction="$2"; ccreceipt="$3";'
仅对awk和此命令可见。它们不是shell变量。 另外,在
sed
命令中,删除这些单引号,然后可以获得以下值:

sed "s/EMAIL/$email/"

您可以试试这个
bash

while read email transaction ccreceipt; do echo "INSERT INTO users (email,paypal_tran,CCReceipt) VALUES ('$email','$transaction','$ccreceipt');"; done<inputfile
测试:

sat:~$ while read email transaction ccreceipt; do echo "INSERT INTO users (email,paypal_tran,CCReceipt) VALUES ('$email','$transaction','$ccreceipt')"; done<inputfile
INSERT INTO users (email,paypal_tran,CCReceipt) VALUES ('catdog@gmail.com','2w4e5r6t7y8u9i8u7','1111-2222-3333-4444')
INSERT INTO users (email,paypal_tran,CCReceipt) VALUES ('dog@gmail.com','2dsdsda53563u9i8u7','3333-4444-5555-6666')

sat:~$whilereademail交易凭证;do echo“插入用户(电子邮件、paypal_tran、CCReceive)值(“$email”、“$transaction”、“$CCReceive”)”;完成您可以尝试此
bash

while read email transaction ccreceipt; do echo "INSERT INTO users (email,paypal_tran,CCReceipt) VALUES ('$email','$transaction','$ccreceipt');"; done<inputfile
测试:

sat:~$ while read email transaction ccreceipt; do echo "INSERT INTO users (email,paypal_tran,CCReceipt) VALUES ('$email','$transaction','$ccreceipt')"; done<inputfile
INSERT INTO users (email,paypal_tran,CCReceipt) VALUES ('catdog@gmail.com','2w4e5r6t7y8u9i8u7','1111-2222-3333-4444')
INSERT INTO users (email,paypal_tran,CCReceipt) VALUES ('dog@gmail.com','2dsdsda53563u9i8u7','3333-4444-5555-6666')

sat:~$whilereademail交易凭证;do echo“插入用户(电子邮件、paypal_tran、CCReceive)值(“$email”、“$transaction”、“$CCReceive”)”;完成您可以尝试此
bash

while read email transaction ccreceipt; do echo "INSERT INTO users (email,paypal_tran,CCReceipt) VALUES ('$email','$transaction','$ccreceipt');"; done<inputfile
测试:

sat:~$ while read email transaction ccreceipt; do echo "INSERT INTO users (email,paypal_tran,CCReceipt) VALUES ('$email','$transaction','$ccreceipt')"; done<inputfile
INSERT INTO users (email,paypal_tran,CCReceipt) VALUES ('catdog@gmail.com','2w4e5r6t7y8u9i8u7','1111-2222-3333-4444')
INSERT INTO users (email,paypal_tran,CCReceipt) VALUES ('dog@gmail.com','2dsdsda53563u9i8u7','3333-4444-5555-6666')

sat:~$whilereademail交易凭证;do echo“插入用户(电子邮件、paypal_tran、CCReceive)值(“$email”、“$transaction”、“$CCReceive”)”;完成您可以尝试此
bash

while read email transaction ccreceipt; do echo "INSERT INTO users (email,paypal_tran,CCReceipt) VALUES ('$email','$transaction','$ccreceipt');"; done<inputfile
测试:

sat:~$ while read email transaction ccreceipt; do echo "INSERT INTO users (email,paypal_tran,CCReceipt) VALUES ('$email','$transaction','$ccreceipt')"; done<inputfile
INSERT INTO users (email,paypal_tran,CCReceipt) VALUES ('catdog@gmail.com','2w4e5r6t7y8u9i8u7','1111-2222-3333-4444')
INSERT INTO users (email,paypal_tran,CCReceipt) VALUES ('dog@gmail.com','2dsdsda53563u9i8u7','3333-4444-5555-6666')


sat:~$whilereademail交易凭证;do echo“插入用户(电子邮件、paypal_tran、CCReceive)值(“$email”、“$transaction”、“$CCReceive”)”;donesample input and expected output将帮助Sample input and expected output将帮助Sample input and expected output将帮助Sample input and expected output我正在尝试这种方法,但我仍然收到$email,而不是它的值catdog@gmail.com.  我似乎无法获取输入的值,但获取输入的名称。我的作业一定是错的。如果你有一个文件,它的内容就像你发布的样本输入一样,那么这就行了。谢谢。这似乎解决了我的问题。我感谢您的努力和代码!我正在尝试这种方法,但我仍然收到$email,而不是它的价值catdog@gmail.com.  我似乎无法获取输入的值,但获取输入的名称。我的作业一定是错的。如果你有一个文件,它的内容就像你发布的样本输入一样,那么这就行了。谢谢。这似乎解决了我的问题。我感谢您的努力和代码!我正在尝试这种方法,但我仍然收到$email,而不是它的价值catdog@gmail.com.  我似乎无法获取输入的值,但获取输入的名称。我的作业一定是错的。如果你有一个文件,它的内容就像你发布的样本输入一样,那么这就行了。谢谢。这似乎解决了我的问题。我感谢您的努力和代码!我正在尝试这种方法,但我仍然收到$email,而不是它的价值catdog@gmail.com.  我似乎无法获取输入的值,但获取输入的名称。我的作业一定是错的。如果你有一个文件,它的内容就像你发布的样本输入一样,那么这就行了。谢谢。这似乎解决了我的问题。我感谢您的努力和代码!谢谢你的帮助。非常好的方法。@user3386373:不要忘记对你认为有用的答案进行投票,即使不是那些首先解决问题的人;)谢谢你的帮助。非常好的方法。@user3386373:不要忘记对你认为有用的答案进行投票,即使不是那些首先解决问题的人;)谢谢你的帮助。非常好的方法。@user3386373:不要忘记对你认为有用的答案进行投票,即使不是那些首先解决问题的人;)谢谢你的帮助。非常好的方法。@user3386373:不要忘记对你认为有用的答案进行投票,即使不是那些首先解决问题的人;)