与えられたコマンドでフィールドの順序を変更するには?
たとえば、の出力を見てみましょうls -l
。デフォルトでは、ファイル名は出力の最後のフィールドとして表示されます。ファイル名が表示される最初のフィールドになるように、この出力をどのようにパイプできますか?
最初はcutコマンドを使用しようとしましたが、フィールドが-fオプションに渡される順序に関係なく、常に元の順序で出力されます。
注:これは単なる例ですがls -l
、列にデータを出力するすべてのコマンドに使用できる一般的な慣用語を探したいと思います。区切られたデータにも適用できるとよいでしょう。
答え1
固定数のフィールドに使用できますawk
。たとえば、2番目と4番目のフィールドを置き換えます。
command | awk '{ t = $2; $2 = $4; $4 = t; print }' | column -t
ただし、残念ながら、ファイル名にスペースを含めることができるため、固定数のフィールド(スペースで区切られています)はありません。これがls -l
出力解析を推奨しない理由です。ls -l