printf span long命令多行

时间:2014-07-24 21:27:10

标签: html bash printf lines

在bash脚本中是否可以将多个printf命令跨越多行?

我的命令是这样的,我希望它更具可读性。 大括号在那里,因为它实际上是awk阻止的一部分。

sqlite3 -noheader -column database.db "select * from tbl_a limit $limit" | \
        awk 'BEGIN { FS = "|"; }
                { printf "\t\t<tr>\n\t\t\t<td class=\"d\">%s</td>\n\t\t\t<td class=\"m\">%s</td>\n\t\t</tr>\n", $1, $2 }' | vim -

1 个答案:

答案 0 :(得分:1)

awk中,您可以使用行继续字符将字符串拆分为多行。

sqlite3 -noheader -column database.db "select * from tbl_a limit $limit" |
    awk 'BEGIN { FS = "|"; }
         { printf "\t\t<tr>\n\
\t\t\t<td class=\"d\">%s</td>\n\
\t\t\t<td class=\"m\">%s</td>\n\
\t\t</tr>\n", $1, $2 }' | vim -

或者,您可以在awk中逐行处理sqlite的输出,而不是使用bash

sqlite3 -noheader -column database.db "select * from t/l_a limit $limit" |
  while IFS='|' read col1 col2; do
      printf '\t\t<tr>
\t\t\t<td class="d">%s</td>
\t\t\t<td class="m">%s</td>
\t\t</tr>\n' "$col1" "$col2"
  done | vim -