출력을 새 줄로 분할

출력을 새 줄로 분할

나는 스크립트를 만들었습니다 ./abc.

출력을 새 줄로 나누고 싶습니다.

내 코드:

#!/bin/bash
dir="$1"

echo -n "size of file:"
du -hba $dir | sort -n -r | tail -1

내 결과는 다음과 같습니다

size of files: 20kb /path/to/sport

내가 원하는 출력은 다음과 같습니다.

size of files: 20kb
         /path/to/sport

답변1

나는 다음과 같은 것을 고려할 것입니다 :

du="$(du -hba "$dir" | sort -n -r | tail -1)"
printf "size of file: %s\n\t%s\n" "${du/$'\t'*}" "${du#*$'\t'}"

du변수는 검색 결과를 가져옵니다. 그런 다음 명령문은 탭으로 구분된 두 부분으로 분할되며 printf각 부분은 를 사용하여 형식 문자열에 삽입됩니다 %s.

이 구조는 개행, 탭 및 기타 특이한 문자가 포함된 파일 이름을 처리해야 합니다.

답변2

./abc | sed 's/files: /files: \n/'

내 시스템에서 다음 명령을 사용해 보았습니다 echo.

$ echo "size of files: 20kb /path/to/sport" | sed 's/files: /files: \n\t/'
size of files:
        20kb /path/to/sport

관련 정보