在报价中包装字符串的外部脚本

时间:2014-07-09 13:03:10

标签: awk sed intellij-idea

我经常测试SQL查询,然后需要将其作为字符串粘贴到Java IDE中。

例如:

 SELECT
  col1,
  col2
FROM table
WHERE....

应该成为:

+ " SELECT "
+ " col1, "
+ " col2 "
+ " FROM table "
+ " WHERE...."

我想在我的IDE中运行一个外部脚本(请参见屏幕图片来定义它),但是我在编写脚本时遇到了麻烦。我尝试过各种形式的awk和bash printf,但最后我得到的只是垃圾或者开头和结尾的引号,而不是每一行。

以前有人做过这样的事吗?

这是我最近的尝试。它会删除\ n&n;并且仅包装整个字符串,而不是每行。谢谢你的任何建议。

#!/bin/bash 
awk '{printf("+\"%s\"\n", $0);}'  <<< $1

enter image description here

后续

我最终在命令行上使用了以下脚本。它工作正常。根本问题是我在$ 1参数附近没有引号,因此它丢弃了换行符

#!/bin/bash 
#
# Print the first line (NR==1) with the String variable initialization.
# Print subsequent lines starting with a "+" and the contents wrapped in quotes.
#

echo "$1" | awk 'NR==1 {printf("  String sqlText = \"%s \"\n", $0)} NR>1 {printf(" + \"       %s \"\n", $0);}'

我输出这样的东西。在我的IDE对齐一切之后,它看起来很好。您可能需要调整前导空格以适合您的设置。

String sqlText = "SELECT "
     + "            col1, "
     + "            col2, "
     + "            col3, "
     + "            col4, "
     + "          FROM my table "

1 个答案:

答案 0 :(得分:0)

以下sed命令会删除每行中的所有前导和尾随空格,并在开头添加+ "并在末尾添加"空格,“)。< / p>

$ sed 's/^\s*\(.*\)\s*$/+ " \1 "/g' file
+ " SELECT "
+ " col1, "
+ " col2 "
+ " FROM table "
+ " WHERE.... "