我有一個資料文件,其中包含多行逗號分隔的字段,如下所示:
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>