我想在使用第二列之前对其进行排序。在括号之间应用 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
)。