쉘 프로세스 하위 문자열

쉘 프로세스 하위 문자열

하위 문자열을 로 바꾸고 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

관련 정보