我正在尝试使用sed来处理文件中的文本,将结果传递给grep但是我在grep之前进行了循环,尝试此代码
sed 's/["."",""("")"]//g' file.txt | for i in ${array[@]}; do if grep -q -i "${array[$i]}"; then echo "${array[$i]}" fi
done
然而问题是sed的输出没有通过管道传输到sed(通过for循环)
只有这样才有效:
for i in ${array[@]}; do
sed 's/["."",""("")"]//g' file.txt | if grep -q -i "${array[$i]}"; then echo "${array[$i]}"
fi
完成
但这里的sed命令在循环中是多余的。
我怎样才能让它发挥作用?
答案 0 :(得分:0)
第一次循环播放所有sed输出
解决方法是将输出保存在变量中并为每个循环重放它:
words=`sed 's/["."",""("")"]//g' file.txt`
for i in ${array[@]}
do
if echo "$words" | grep -q -i "${array[$i]}"
then
echo "${array[$i]}"
fi
done