出力を新しい行に分割

出力を新しい行に分割

私はスクリプトを作成しました./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変数は検索結果を取得します。その後、ステートメントはタブで区切られた2つの部分に分割され、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

関連情報