我想將一個JSON格式的文件放入一列,這樣做我認爲awk可以是一個很棒的工具。我的輸入是(例如):避免在awk中打印兩次最後一行
a
b
c
d
e
而且我的輸出,我想的是:
{nodes:[{id='a'},
{id='b'},
{id='c'},
{id='d'},
{id='e'}]}
我想有兩個不同的代碼。第一個是:
BEGIN{
FS = "\t"
printf "{nodes:["
}
{printf "{'id':'%s'},\n",$1}
END{printf "{'id':'%s'}]}\n",$1}
但是我打印兩次的最後一行:
{nodes:[{id='a'},
{id='b'},
{id='c'},
{id='d'},
{id='e'},
{id='e'}]}
,我嘗試的另一種選擇是用函數getline:
BEGIN{
FS = "\t"
printf "{nodes:["
}
{printf getline==0 ? "{'id':'%s'}]}" : "{'id':'%s'},\n",$1}
但出於某種原因,函數getline在最後一行總是1,而不是0,所以:
{nodes:[{id='a'},
{id='b'},
{id='c'},
{id='d'},
{id='e'},
有沒有解決我的問題的建議?
這可能會幫助:http://stackoverflow.com/questions/11866860/how-do-you-skip -the-last-line-w-awk –
你不使用valide json格式。除了數字和布爾值之外,每個名稱和值都需要用引號'''包圍,你應該使用工具'jq'來驗證你的json數據,它必須是'awk',還是可以創建一個簡單的'回聲'與它的所有東西? – suleiman
都有理由,現在我的代碼工作 – oscarcapote