シェルプロセスのサブストリング

シェルプロセスのサブストリング

部分文字列をに置き換え、sedコマンドの評価を$(...)。しかし、置き換える文字列に基づいて代替値を計算するにはどうすればよいですか?

はい

statにフォーマットされた文字列があります。

❯ stat --format '%A size %s, birth %.10w mod %.10y' Ambient/The\ XX\ -\ Intro.mp3
-rw-r--r-- size 5126226B, birth 2021-12-05 mod 2021-11-15

今、人間が読める次元を作りたいです。もちろん、中間変数を使用してstatまたは他の呼び出しを使用することもできます。

❯ stat --format '%A size |, birth %.10w mod %.10y' Ambient/The\ XX\ -\ Intro.mp3 | sed "s/|/$(stat --format "%s" Ambient/The\ XX\ -\ Intro.mp3 | numfmt --to=iec)/"
-rw-r--r-- size 4,9M, birth 2021-12-05 mod 2021-11-15

自然

パイプライン内でこの処理を処理する方法はありますか?これをawk使用したりcutマージするなどの方法はありますか?

答え1

サイズの後にカンマを挿入しない場合Bstatこの文字はUbuntuから自動的に挿入されないため、どこから来たのかわかりません)、stat出力をにパイプnumfmtして入力の3番目のフィールドを変換することができます。

$ stat --format '%A size %s birth %.10w mod %.10y' box.ova
-rw------- size 17098132480 birth - mod 2021-12-06
$ stat --format '%A size %s birth %.10w mod %.10y' box.ova | numfmt --to=si --field=3
-rw------- size         18G birth - mod 2021-12-06

複数の連続した空白を圧縮するには、次のコマンドを使用しますtr

$ stat --format '%A size %s birth %.10w mod %.10y' box.ova | numfmt --to=si --field=3 | tr -s ' '
-rw------- size 18G birth - mod 2021-12-06

関連情報