Linux
如何將csv行中的每個字元串分隔為行
我們想將 csv 行中的每個字元串分隔為行
線路範例(可以是其他線路,具有相同的概念)
machine23,machine094,machine73,machine83
所以我們試試這個
echo machine23,machine094,machine73,machine83 |awk -F"," '{for(i=1;i<=NF;i++){printf "%-20s", $i};printf "\n"}'
但我們得到
machine23 machine094 machine7 machine83
而是得到以下預期結果
machine23 machine094 machine7 machine83
有什麼建議麼?
$ echo machine23,machine094,machine73,machine83 | tr ',' '\n' machine23 machine094 machine73 machine83
或者如果您真的想在 awk 中執行此操作(可能是因為您想在 awk 中進行進一步處理):
$ echo machine23,machine094,machine73,machine83 | \ awk -F',' -v OFS='\n' '{$1=$1;$0=$0;print}' machine23 machine094 machine73 machine83
這使用了一個簡潔的 awk 技巧,如果您更改任何欄位(即使通過將其設置為等於自身,如 in
$1=$
)然後 set$0=$0
,awk 將重新格式化整個輸入行 -FS
用輸出欄位分隔符(OFS
,在這種情況下為換行符)。