如何对齐输出?

时间:2015-06-22 15:37:07

标签: shell

我正在编写一个带参数的脚本并读取ls -l的输出。然后,它会显示用户以及带有该参数的文件STARTING的名称。

例如:

$> ls -l | ./script.sh "o"
John        ok_test
RandomUser  o_file

我的脚本工作正常,但我有一个(次要的)问题我真正需要修复:它没有像上面的例子那样对齐文件名。

这是上述脚本:

#!/bin/bash                                                                                                                                                                                   

while read hello
do
    name=$(echo $hello | cut -d' ' -f9 | grep "^"$1)
    if [ $? = 0 ]
    then
        log=$(echo $hello | cut -d' ' -f3)
        echo -n -e $log'\t' && echo $name
    fi
done

无论用户名大小,有没有人知道如何对齐输出?

非常感谢。

1 个答案:

答案 0 :(得分:1)

我将其重写为:

#!/bin/bash
while read -ra hello; do
    name=${hello[8]}
    if [[ $name == "$1"* ]]; then
        log=${hello[2]}
        echo "$log $name"
    fi
done | column -t

read -ra拆分输入行并将单词存储在" hello" 阵列
[[ $name == "$1"* ]]是一种内置方法,用于检查字符串是否以某个值开头。