하위 문자열을 로 바꾸고 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
크기 뒤에 쉼표를 삽입하지 않는 경우 B
( stat
이 문자는 Ubuntu에서 자동으로 삽입되지 않으므로 어디서 왔는지 잘 모르겠습니다) stat
출력을 로 파이프 numfmt
하여 입력의 세 번째 필드를 변환하도록 할 수 있습니다.
$ 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