在grep从sed获取其输出之前的for循环

时间:2015-01-01 08:08:25

标签: bash for-loop sed grep pipe

我正在尝试使用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命令在循环中是多余的。

我怎样才能让它发挥作用?

1 个答案:

答案 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