我嘗試編寫用於處理由名稱 - 值對組成的文件的KSH腳本,其中每行都包含幾個名稱值對。KSH腳本:如何在數值已經跳過逗號時分割','?
格式是:
NAME1 VALUE1,NAME2 VALUE2,NAME3 VALUE3, etc
假設我寫:
read l
IFS=","
set -A nvls $l
echo "$nvls[2]"
這會給我的第二個名稱 - 值對,好和容易。現在,假設任務被擴展,以便值可以包含逗號。他們應該被轉義,像這樣:
NAME1 VALUE1,NAME2 VALUE2_1\,VALUE2_2,NAME3 VALUE3, etc
很顯然,我的代碼將不再有效,因爲「讀」帶陣列的所有報價和第二個元素只是「NAME2 VALUE2_1」。
我被老卡住了,沒有「讀-A數組」。我嘗試了用「讀-r」和「eval set -A ....」的各種技巧,無濟於事。我不能使用「read nvl1 nvl2 nvl3」來進行內部閱讀和分解,因爲我不知道每行中有多少個名稱 - 值對。
有沒有人對我有幫助?
PS 我知道我已經在Perl,Python甚至是awk中做了這樣的事情。但是,我必須這樣做,在KSH(...或死亡的嘗試;)
是否使用sed計數?你也可以使用awk或者perl或者...來完成這個工作。 sed正則表達式讓我大吃一驚。我會在方括號內使用兩個反斜槓,但我想這實際上並不必要。 – 2008-10-11 04:22:46
至於刪除這個問題 - 我不知道推薦的程序是什麼,但我懷疑破壞你的智慧語言真的是他們想要的。如果最糟糕的情況發生,我可以複製你的答案給你,讓你選擇 - 但它是一個完全的騙子。 – 2008-10-11 04:24:25