cat 文件中用于 LPAD 更新查询的 UNIX 脚本

cat 文件中用于 LPAD 更新查询的 UNIX 脚本

我想要一个脚本,该脚本将打开文本文件数据并将更新查询写入这些文件并保存在将通过 cron 执行的 SQL 文件中。我已经准备好命令,但它在 RPAD 中写入更新查询下面给出的是示例数据和命令:

text file data : cat file.txt
123456789
234567891
345678912
456789123

命令:

cat file.txt | sed 's/$/update 表设置字段 where file_number="file.txt"/'> file1.sql

当前输出:

123456789update table set field where file_number=
234567891update table set field where file_number=
345678912update table set field where file_number=
456789123update table set field where file_number=

预期输出:

update table set field where file_number='123456789';
update table set field where file_number='234567891';
update table set field where file_number='345678912';
update table set field where file_number='456789123';

答案1

可能还有更优雅的方法(但是,现在我想到任何一种方法),所以让我们坚持下去sed

  • 为什么你的命令没有按照你期望的那样工作?

    $匹配行结束,这就是为什么你的update table ...字符串被放在每行的末尾。

  • 如何提高?

    1. 您不需要catsed也接受文件作为参数。
    2. 将整行定义为匹配模式(.*匹配所有内容,将其括在转义括号中以引用它:\(.*\)
    3. 使用 sql 命令字符串作为替换,并\1在适当的位置放置引用标记:

      sed "s|\(.*\)|update table set field where file_number=\'\1\';|" file.txt > file.sql
      

      生产

      update table set field where file_number='123456789';
      update table set field where file_number='234567891';
      update table set field where file_number='345678912';
      update table set field where file_number='456789123';
      

相关内容