用输入和多个管道循环一个linux命令

时间:2014-05-16 01:39:09

标签: linux loops input pipe tr

此命令有效,但我希望它在每个子目录中的每个文档(input.txt)上运行它。

tr -d '\n' < input.txt | awk '{gsub(/\. /,".\n");print}' | grep “\[" >> SingleOutput.txt

代码获取文件输入并将其分成带有新行的句子。然后它找到包含“[”的所有句子并将句子输出到单个文件中。 我尝试了几种使用find和for循环的循环技术,但是在这个例子中无法运行它。我试过了

for dir in ./*; do 
(cd "$dir" && tr -d '\n' < $dir | awk '{gsub(/\. /,".\n");print}' | grep “\[" >> /home/dan/SingleOutput.txt); 
done;

以及

find ./ -execdir tr -d '\n' < . | awk '{gsub(/\. /,".\n");print}' | grep "\[" >> /home/dan/SingleOutput.txt;

但他们没有工作执行只是给我&gt;分数。任何想法?

2 个答案:

答案 0 :(得分:0)

为什么不这样呢?

tr -d '\n' < */input.txt | awk '{gsub(/\. /,".\n");print}' | grep “\[" >> SingleOutput.txt

或者您是否有兴趣保持每个input.txt的输出分开?

答案 1 :(得分:0)

试试这个:

cd $dir
find ./ | grep "input.txt$" | while read file; do tr -d '\n' < $file | awk '{gsub(/\. /,".\n");print}' | grep “\[" >> SingleOutput.txt; done

这将在$ dir下找到所有名为input.txt的文件,它将执行您所说的已经工作的发送输出到$ dir / SingleOutput.txt。