此命令有效,但我希望它在每个子目录中的每个文档 (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;
但是他们并没有执行,只是给了我>分。有什么想法吗?
最佳答案
试试这个:
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。
关于linux - 使用输入和多个管道循环 Linux 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23691343/