Text-Processing
將結構化列表列印到命令行(樹狀)
如果我有一個帶有這樣的結構化列表的文本文件:
#linux ##audio ###sequenzer ####qtractor ###drummachine ####hydrogen ##scores ###lilypond ###musescore ##bureau ###kalender ####calcurse ###todo ####tudu
我怎樣才能
tree
像命令行一樣列印它?linux/ ├── audio │ ├── drummachine │ │ └── hydrogen │ └── sequenzer │ └── qtractor ├── bureau │ ├── kalender │ │ └── calcurse │ └── todo │ └── tudu └── scores ├── lilypond └── musescore
有沒有我錯過的應用程序?
用於
awk
將結構轉換為“正常”路徑。linux/ linux/audio/ linux/audio/sequenzer/ linux/audio/sequenzer/qtractor/ linux/audio/drummachine/ linux/audio/drummachine/hydrogen/ ...
然後你可以用
tree --fromfile .
它來閱讀它:
convert_structure.awk
:{ delete path_arr path = "" level=match($0,/[^#]/)-1 sub(/^#*/,"") p[level]=$0 for (l=1;l<=level;l++) { path_arr[l]=p[l] path = path p[l] "/" } print path }
執行:
awk -f convert_structure.awk structure.txt | tree --fromfile . --noreport
輸出:
. └── linux ├── audio │ ├── drummachine │ │ └── hydrogen │ └── sequenzer │ └── qtractor ├── bureau │ ├── kalender │ │ └── calcurse │ └── todo │ └── tudu └── scores ├── lilypond └── musescore
備註:
- 如果您的實現不支持數組,請在此處檢查。
awk``delete
- 這適用於包含空格的路徑,但顯然不適用於包含換行符的路徑。