使用 AWK 解析 CSV 以生成 HTML 输出

M.K*_*.K. 3 awk html csv

我有一个包含多行逗号分隔字段的数据文件,如下所示:

United Kingdom, GB, +44
Run Code Online (Sandbox Code Playgroud)

我想为文件中的每一行生成以下输出:

United Kingdom, GB, +44
Run Code Online (Sandbox Code Playgroud)

我使用 awk 得到了如下结果,但是在添加尖括号后,我得到了错误的输出:

<option value="GB">United Kingdom +44</option>
Run Code Online (Sandbox Code Playgroud)

小智 5

printf在嵌入引号时,awk 的函数可以更容易使用。

awk -F, '{printf("<option value=\"%s\">%s %s</option>\n", $2, $1, $3)}'
Run Code Online (Sandbox Code Playgroud)

问题是每个字段之间也有空格。我们可以使用该gsub函数来修剪每个字段。

awk -F, '{gsub(/^ +| +$/,"", $2); printf("<option value=\"%s\">%s %s</option>\n", $2, $1, $3)}'
Run Code Online (Sandbox Code Playgroud)

或者更简单的是更改我们的字段分隔符: awk -F' *, *' '{printf("%s %s\n", $2, $1, $3)}'

如果您需要修剪多个字段,那么最好使用循环或函数(视情况而定)。有关更多信息,请参阅/sf/ask/698986991/

  • @MK 看起来你的 csv 有 CRLF 行分隔符,首先使用 `dos2unix` 转换为 unix。 (2认同)