2014-12-10 49 views
0

我有一個數組,我想垂直打印,但也並排。例如,並排垂直打印數組元素字符

我有如下由空格分隔這些元件,並且由逗號分隔的元件的每個字符的數組: 0,1,2 3,4,5 6,7,8

我希望它輸出:

036 
147 
258 

任何幫助感激!

回答

2
ary=(0,1,2 3,4,5 6,7,8) 
pr -T -"${#ary[@]}" < <(IFS=,; echo "${ary[*]}" | tr , '\n') | tr -d '[:blank:]' 

打印

036 
147 
258 

注:

  • < <(...)語法的process substitution
  • 重定向(第一<)的處理置換內部的位打印加入了陣列元件用逗號將逗號翻譯成換行符
  • 過程替換(單個數字列)的輸出重定向到pr
  • pr是強制輸出列成列的方便工具。
  • -"${#ary[@]}"選項告訴pr使用與數組元素相同數量的列。
  • pr的輸出被髮送到第二個tr,刪除任何水平空白。

如果你想逗號, 更改第二 tr到: tr -s '[:blank:]' , 使用本:

pr -T -s, -"${#ary[@]}" < <(IFS=,; echo "${ary[*]}" | tr , '\n') 
+0

有沒有辦法讓逗號分隔輸出的每個字符?你介意解釋這個解決方案嗎?謝謝您的幫助! – jo123 2014-12-10 22:33:20

+1

爲了保持逗號加上'-s'到'pr'命令也有效,並且意味着最後的'tr'可以完全丟棄。 – 2014-12-11 00:20:06

+0

很對,謝謝 – 2014-12-11 00:38:29