「column -t」に特定の属性を持つ行を無視させる方法は?

「column -t」に特定の属性を持つ行を無視させる方法は?

/etc/fstabcolumn -te私はパイプを通して素晴らしいフォーマットのテーブルを得るのがどれほど良いかと思いました。
しかし、columnもちろん、コメント行とマウントポイント定義は認識されないため、コメントもすべてのスペースで分割され、テーブル列形式で指定されます。

#                                          /etc/fstab:                  static   file                                      system     information.
#
#                                          Use                          'blkid'  to                                        print      the           universally   unique      identifier  for       a
#                                          device;                      this     may                                       be         used          with          UUID=       as          a         more  robust     way  to  name  devices
#                                          that                         works    even                                      if         disks         are           added       and         removed.  See   fstab(5).
#
#                                          <file                        system>  <mount                                    point>     <type>        <options>     <dump>      <pass>

#                                          /                            was      on                                        /dev/sda2  during        installation
UUID=8fa99d69-8dac-4aca-bb61-90f753ba5169  /                            btrfs    defaults,subvol=@rootfs,metadata_ratio=6  0          1
#                                          /home                        was      on                                        /dev/sda2  during        installation
UUID=8fa99d69-8dac-4aca-bb61-90f753ba5169  /home                        btrfs    defaults,subvol=@home                     0          2

columnで始まらないフォーマット行だけを作成する方法はありますか#


fstab編集:上記の例が実際にBtrfsに有効であることを明確にする必要があるようです。サブボリュームsubvolとインストールオプションを使用して別々にインストールできますsubvolid
これはまた、最初の列のデバイスがfstab必ずしも一意である必要はないことを意味します。

ベストアンサー1

私の考えに実用的な解決策は、ファイル全体がcolumn機能するようにし、コメント行の複数のスペースを単純に縮小することです。

column -t /etc/fstab | sed '/^#/ s/ \{1,\}/ /g'

それ以外の場合は、行に番号を付け、コメント行とコメント以外の行を別々に処理し、それらをすべて貼り付ける以外にこれを行う方法はありません。

sort -nk1,1 \
<(nl -nln /etc/fstab | grep -vE '^[[:digit:]]+[[:space:]]+#'| column -t | sed 's/ \{1,\}/\t/') \
<(nl -nln /etc/fstab | grep -E '^[[:digit:]]+[[:space:]]+#') \
| cut -f2-

おすすめ記事