有没有*nix命令,可以按照每行最大元素数格式化输入(由换行符分隔)?例如:
$ yes x | head -10 | command 4
x x x x
x x x x
x x
我写了一个快速的bash脚本(如下所示),来执行此任务,但它似乎很长并且可能效率低下。有更好的方法来做到这一点吗?
我写了一个快速的bash脚本(如下所示),来执行此任务,但它似乎很长并且可能效率低下。有更好的方法来做到这一点吗?
#!/bin/sh
if [ -z "$1" -o -z "$2" ]; then
echo Usage `basename $0` {rows} {columns}
exit 1
fi
ROWS=$1
COLS=$2
input=$(yes x | head -${ROWS})
lines=()
i=0
j=0
eol=0
for x in ${input[*]}
do
lines[$i]="${lines[$i]} $x"
j=`expr $j + 1`
eol=0
if [ $j -ge ${COLS} ]; then
echo lines[$i] = ${lines[$i]}
i=`expr $i + 1`
j=0
eol=1
fi
done
if [ ${eol} -eq 0 ]; then
echo lines[$i] = ${lines[$i]}
fi