2014-05-16 1 views
0

이 명령이 작동하지만 모든 하위 디렉토리 (input.txt)의 모든 문서에서이 명령을 실행하고 싶습니다.입력 및 복수 파이프를 사용하여 linux 명령 반복하기

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; 

을 시도했지만 그들은 단지> 자국이 나에게주는 실행 작동하지 않았다. 어떤 아이디어?

+0

예 ... perl. :-) – Leo

답변

0

이 시도 : 이것은 $ dir을 아래 input.txt를라는 모든 파일을 찾을 수

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

는 당신이 이미 DIR $/SingleOutput.txt에 출력을 보내 일하고 말을 수행합니다.

+0

이것은 첫 번째 grep없이 원했던 것입니다. 고맙습니다! 찾기 ./ | 읽는 동안 파일; do tr -d '\ n'<$ file | awk '{gsub (/ \. /," .\n");print}'| grep "\ [">> SingleOutput.txt; done – user3643012

+0

도움이 되었기 때문에 기쁩니다. 정답으로 받아 들여도됩니다. :) – Tiago

0

왜 이렇게 좋아 보이지 않습니까?

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

또는 당신은 각 input.txt 별도의 출력을 유지에 관심이 있습니까?

관련 문제