如何使用sh迭代awk的每个输出?

时间:2016-04-22 12:07:58

标签: bash shell awk sh

我有一个test.sh文件,它通过文本文件test.bed

1   31  431
1   14  1234
1   54  134
2   435 314
2   314 414

while read line;do
    echo $line  
    # ... more code ... #
done < <(awk -F '\t' '$1 == 1 {print $0}' test.bed )

使用bash test.sh运行此功能,但使用sh test.sh时会出现语法错误。如何使用sh代替bash来完成上述操作?

它给出的错误是

test.sh: line 5: syntax error near unexpected token `<'
test.sh: line 5: `done < <(awk -F '\t' '$1 == 1 {print $0}' test.bed )'

1 个答案:

答案 0 :(得分:3)

Process Substitutionbash扩展程序 - 未由POSIX指定。这是sh兼容..

#!/bin/sh

awk -F '\t' '$1 == 1 {print $0}' test.bed  | while read line; do
echo $line
    # ... more code ... #
done