Awk

將程式碼格式化為列的腳本

  • November 28, 2020

通常我有我想根據類似的行結構對齊的程式碼,而不僅僅是左側的自動縮進。有沒有一個腳本可以做這樣的事情?這是我想做的一個例子。鑑於:

           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:]]*//'

引用自:https://unix.stackexchange.com/questions/621898