如何将一行变成两条新行

如何将一行变成两条新行

我想将一行变成两条新行。

我的代码:

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

    printf "maximum file size: %s" \ 
                    find $dir -printf "%s %p\n" | sort -n | tail -1

使用上面的代码,我在生成输出时面临问题。

错误输出:

maximum file size:  116864 /usr/lib/apt/methods/mirror

预期输出(仅路径应位于带有一个选项卡的新行中):

 maximum file size:  116864 
               /usr/lib/apt/methods/mirror

答案1

find通过sedor管道输出可能会更容易awk

$!/bin/sh
dir=$1
find "$dir" -printf "%s %p\n" | sort -n | tail -1 | sed -n 's/^\([0-9]\+\)\s\+\(.*\)$/Max size: \1\n\t\2/p'

答案2

find "$dir" -printf "%s %p\n" | sort -n | tail -1 | {
    read -r size name
    printf "maximum file size: %d\n\t%s\n" "$size" "$name"
}

由于它read发生在子 shell 中,因此我使用大括号将 read 命令与 printf 命令分组。设置变量和使用它们必须在同一个子 shell 中进行。

答案3

find $dir -printf "%s **\n**%p\n" | sort -n | tail -1

使用上面的命令。

相关内容