使用 AWK 解析 CSV 以產生 HTML 輸出

使用 AWK 解析 CSV 以產生 HTML 輸出

我有一個資料文件,其中包含多行逗號分隔的字段,如下所示:

United Kingdom, GB, +44

我想為文件中的每一行產生以下輸出:

<option value="GB">United Kingdom +44</option>

我用 awk 得到瞭如下結果,但是在添加尖括號之後,我得到了錯誤的輸出:

BEGIN{FS=",";}                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                
{                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          
    print "<option value=\"" $2 "\">";                                                                                                                                                                                                                         

}

答案1

當涉及到嵌入引號時, awk 的printf函數可以更容易使用。

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

問題是每個欄位之間也有空格。我們可以使用該gsub函數來修剪每個字段。

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

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

如果您需要修剪多個字段,那麼最好使用循環或函數(取決於情況)。看https://stackoverflow.com/questions/9985528/how-can-i-trim-white-space-from-a-variable-in-awk了解更多。

答案2

命令

awk -F "," '{print "<option value="$2">United Kingdom "$3"</option>"}' filename| sed 's/GB/"&"/g'

輸出

<option value= "GB">United Kingdom  +44</option>

相關內容