2017-12-19 4 views
0

ich einfach grep bin mit wieNizza Ausgabe von grep in for-Schleife

grep -E "input files : 0" *.stdout 

und sein Ausgang ist folgende:

QCD_HT200to300_13TeV_ext.stdout:==> Total number of input files : 0 
WJetsToLNu_HT_600To800_13TeV_ext1.stdout:==> Total number of input files : 0 

Wenn ich den gleichen Befehl grep innerhalb der for-Schleife dann seinen Ausgang ist nicht nett. Mein Skript ist

foreach file (`grep -E "input files : 0" *.stdout`) 
     echo $file 
end 

der Ausgang dieser ist wie:

QCD_HT200to300_13TeV_ext.stdout:==> 
Total 
number 
of 
input 
files 
: 
0 
WJetsToLNu_HT_600To800_13TeV_ext1.stdout:==> 
Total 
number 
of 
input 
files 
: 
0 

Wie ich die gleiche Leistung innerhalb foreach Schleife bekommen kann, wie ich aus grep Befehl erhalten läuft unabhängig.

+0

siehe https://unix.stackexchange.com/questions/131766/why-does-my-shell-script-choke-on-whitespace-or-other-special-characters – Sundeep

+0

@Sundeep: Ich sah bei Link und versucht, aber es hat nicht funktioniert ... Aber die Suggestion von JDQ gegeben gearbeitet ... – ramkrishna

Antwort

1

Verwenden Sie die Liste der Dateien, um in der foreach-Schleife zu durchlaufen, und führen Sie den Grep in der foreach-Schleife.

set files = `ls *.stdout` 

foreach file ($files) 
    grep -E "input files : 0” $file 
end