切断の反対のコマンドは存在しますか?

切断の反対のコマンドは存在しますか?

私はcutLinuxで-cフラグ付きコマンドを使用するのが好きです。ただし、デフォルトでは入力が与えられたら、実行するコマンドを見つけることに興味がありますcut

drwxrwxrwx 2 root root 4096 4096 4 20:15 bin
drwxrwxrwx 2 root root 4096 4096 4 20:15 Desktop

私はすべてを見たいです。とは別に「4096 4 20:15」。出力は次のとおりです。

drwxrwxrwx 2 root root bin
drwxrwxrwx 2 root root Desktop

意味があれば、文字xとyの間を文字通り切り取ることができるようにしたいです。

どんなアイデアがありますか?これが書くのが難しいスクリプトであるとは想像できませんが、コマンドがすでに存在する場合は喜んで使用します。

答え1

他の人が指摘したように、出力を解析しないでください。ls。これを例として使用し、他のものを解析すると仮定すると、必要なものを達成するためのlsいくつかの方法があります。

  1. cutそして -d-f

    cut -d ' ' -f 1,2,3,4,9
    

    からman cut

    -d, --delimiter=DELIM
          use DELIM instead of TAB for field delimiter
    
    -f, --fields=LIST
          select only these fields;  also print any line
          that contains no delimiter  character,  unless
          the -s option is specified
    

    特に、連続したフィールド間のスペースの量を変更しlsてより良い位置合わせを行うと、失敗する可能性があります。扱い、変わります。lscutfoo<space>barfoo<space><space>bar

  2. awkそのバリエーションは各入力行を空のフィールドに分割するため、必要なフィールドだけを印刷するように指示できます。

    awk '{print $1,$2,$3,$4,$9}'
    
  3. 真珠

    perl -lane 'print "@F[0 .. 3,8]"'
    

答え2

cutこのオプションを使用して結果の逆数を取得できます--complement。これcut マニュアルページ(やや役に立たない)言った:

- 補足

          complement the set of selected bytes, characters or fields

例えば、

$ echo The fifth and sixth words will be missing | cut -d ' ' -f 5-6 --complement The fifth and sixth be missing

説明する:

  • -d ' '区切り文字を空白文字に設定
  • -f 5-6出力するフィールド5〜6を選択してください(「words will」)。
  • --complement選択したテキストの補数(アンチコード)を返します。

答え3

stat交換を使用するlsことは直接的な交換ではないので、構文解析に関するすべてのフレンドリーな警告についてlsその誘惑に感謝することができます。

ls -aこれは現在のディレクトリとほぼ同じです。

find . -maxdepth 1 -print0|xargs -0 stat --format="%A %U %G %n"

これが私が得ることができる最も近いものです:

find . -maxdepth 1 -print0\
|awk 'BEGIN{RS="\0";FS="/";ORS="\0"}{if(/\//){print $2}else{print}}'\
|xargs -0 stat --format="%A %U %G %n"\
|LC_COLLATE=C sort -k4 

パラメータの代わりにパラメータを使用するには、次の関数.に入力する必要があります。

function ls4up() {
    find . -maxdepth 1 -print0\
    |awk 'BEGIN{RS="\0";FS="/";ORS="\0"}{if(/^[^\/][^\/]*\//){print $2}else{print}}'\
    |xargs -0 stat --format="%A %U %G %n"\
    |LC_COLLATE=C sort -k4 
}

これで、stat出力や他のものを解析するのではなく、これを使用するのがどれほど簡単かがわかりますls。 /セカンド

関連情報