用于对创建文件中的行进行排序的脚本

时间:2015-03-22 13:59:56

标签: bash file sorting lines

我有一个创建文件并在其中写入内容的脚本。

我必须在同一个脚本中包含哪些说明,以便该文件中的行按字母顺序排序?

让我更明确一点,这是我的代码:

nr=0
while read line; 
do
    for fisier in `find $1 -type f`
        do  
            counter=0
            for word in $(<$fisier)
                do
                    file=`basename "$fisier"`
                    length=`expr length $word`
                    echo "$length"
                    if [ $length -gt $n ];
                        then counter=$(($counter+1))
                    fi
                done 
        if [ $counter -gt $nr ];
        then echo "$file" >> $destinatie
        fi
        done
break
done

我应该在哪里放置| sort命令?

2 个答案:

答案 0 :(得分:1)

只需通过sort输出您的输出。如果您只有一个创建输出的命令,则可以使用如下子shell:

(
# cmd 1
# cmd 2
) | sort > outfile

使用像编辑问题一样的while循环,我建议您在done关键字之后添加:

while condition
do
  # ...
done | sort >> "$destinatie"

请注意,您还必须删除循环内的重定向>> $destinatie,并将调试输出回显给stderr:

>&2 echo "$length"

另外,因为您要使用>>进行追加,如果您在启动时没有rm $destinatie(我记得您按照another question中的说明执行了操作),那么整个文件将< em> not 在终止后进行排序,而不是每次运行期间添加的行都将被排序。

使用sort了解有关man sort选项的详情。

答案 1 :(得分:0)

您可以使用sort Unix命令:

function_generating_lines | sort > output_file.txt