我想在 while 循环中使用 tee 的嵌套过程替代。
while read line; do
#process line
echo "--$line"
done < <(cat sample.file | tee >(grep "SPECLINE") | grep "LINESTOPROCESS")
因此,我需要:
- sample.file 中所有包含 "LINETOPROCESS" 表达式的行都应该被传递到循环中,并且它们将以 "--" 前缀打印。
- 所有包含“SPECLINE”的行都需要在 tee 的第一个进程替换中打印(在 grep 中)。
我想避免多次对 sample.file 进行 cat-ting,因为它太大太重。
使用一个简单的 sample.test 文件:
line1 SPECLINE
line2 LINETOPROCESS
line3 LINETOPROCESS
line4 SPECLINE
line5 I don't need it
line6 also not
line7 also not
line8 SPECLINE
line9 LINETOPROCESS
我的结果:
# ./test.sh
#
我想要的结果:
# ./test.sh
line1 SPECLINE
--line2 LINETOPROCESS
--line3 LINETOPROCESS
line4 SPECLINE
line8 SPECLINE
--line9 LINETOPROCESS
或者我也可以接受这个作为输出:
# ./test.sh
--line2 LINETOPROCESS
--line3 LINETOPROCESS
--line9 LINETOPROCESS
line1 SPECLINE
line4 SPECLINE
line8 SPECLINE
更新1
greps 仅用于演示。我真的需要这两个替换。
- sample.file 是一个 http 文件。
- grep "SPECLINE" 将是 "hxselect -i -s ';' -c 'div.hour'
- grep "LINESTOPROCESS" 将是 "hxselect -i -s ';' -c 'div.otherclass' | hxpipe
hx 程序不是面向行的。他们正在从标准输入读取并输出到标准输出。
因此,tee 的第一个命令将选择 'hour' 类的 div,并用 ';' 分隔它们。之后, tee 之后的管道将选择所有具有“otherclass”类的 div,hxpipe 会将其展平以便循环进行进一步处理。