如何在将文件重定向为 Bash 脚本的输入之前对其进行排序?

如何在将文件重定向为 Bash 脚本的输入之前对其进行排序?

我想在使用第二列之前对其进行排序。在括号之间应用 sort-command 是可以的,还是有其他方法可以将其集成到 bash 脚本中。我考虑在脚本开头对 file.txt 进行排序。在重定向为输入之前还有哪些其他简单的排序方法?

while IFS=, read var1 var2
do
//code//
done<(sort -t"," -k 2 file.txt)

答案1

()是圆括号,而不是大括号 - 大括号是{}

<(command)构造被称为流程替代,并且在语法上等同于文件。为了使其在语法上等同于重定向自一个文件你需要另一个<操作符:

while IFS=, read var1 var2
do
//code//
done < <(sort -t"," -k 2 file.txt)

排序然后重定向的另一种常见方式是使用简单的管道:

sort -t"," -k 2 file.txt | while IFS=, read var1 var2
do
//code//
done

后者更具可移植性(进程替换不是 POSIX 要求,例如不受支持/bin/sh)。

相关内容