Awk
將程式碼格式化為列的腳本
通常我有我想根據類似的行結構對齊的程式碼,而不僅僅是左側的自動縮進。有沒有一個腳本可以做這樣的事情?這是我想做的一個例子。鑑於:
self.colorOfBackground =? colorOfBackground self.colorOfLineForTime =? colorOfLineForTime self.marginOnBottom =? marginOnBottom self.marginOnTop =? marginOnTop ...
我想執行一個腳本並對齊選項卡上的每個“列”,以便它們對齊並且更容易在視覺上解析:
self.colorOfBackground =? colorOfBackground self.colorOfLineForTime =? colorOfLineForTime self.marginOnBottom =? marginOnBottom self.marginOnTop =? marginOnTop ...
我認為 Perl 或 Python 或 AWK 或其他一些腳本語言可以做到這一點,但可惜我不知道這些。到目前為止,我一直在使用 Vim 及其基於正則表達式的替換功能,但我仍然大部分時間都在手動間隔列。
這會給你預期的結果
文件.txt:
self.colorOfBackground =? colorOfBackground self.colorOfLineForTime =? colorOfLineForTime self.marginOnBottom =? marginOnBottom self.marginOnTop =? marginOnTop
使用以下命令時:
sed 's/^[[:blank:]]*//' File.txt | column -t -s " "
此命令將刪除前端空格:
sed 's/^[[:blank:]]*//'
請參閱此堆棧溢出問題,並通過範例詳細說明該命令實際堆棧溢出的內容:click_here句法 :
column -t [-s separator] [filename] -> column -t -s " "
-t : 以表格格式顯示內容的參數
-s :根據特定的分隔符分隔內容
命令輸出:
self.colorOfBackground =? colorOfBackground self.colorOfLineForTime =? colorOfLineForTime self.marginOnBottom =? marginOnBottom self.marginOnTop =? marginOnTop
確保在使用上述命令之前,只需將文件中的整個數據對齊到左側,以便對齊我使用的數據:
sed 's/^[[:blank:]]*//'