コードを列にフォーマットするスクリプト

コードを列にフォーマットするスクリプト

多くの場合、左の自動インデントではなく、同様の行構造に基づいてコードをソートしたいと思います。このようなことができるスクリプトはありますか?以下は私がやりたいことの例です。一方:

            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とVimの正規表現ベースの代替機能を使用してきましたが、まだほとんどの時間を手動で列間隔を指定するのに費やしています。

ベストアンサー1

これにより、期待される結果が得られます。

ファイル.txt:

self.colorOfBackground =? colorOfBackground
self.colorOfLineForTime =? colorOfLineForTime
self.marginOnBottom =? marginOnBottom
self.marginOnTop =? marginOnTop

次のコマンドを使用する場合:

sed 's/^[[:blank:]]*//' File.txt | column -t -s "  "

このコマンドは先行スペースを削除します。sed 's/^[[:blank:]]*//'このスタックオーバーフローの質問を参照して、このコマンドが実際にスタックオーバーフローで実行する操作を例とともに詳細に説明します。ここをクリック

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

おすすめ記事