आप सॉर्ट के आउटपुट को संयुक्त xargs, -exec पर कैसे पाइप करते हैं?

कृपया मेरे साथ बेकार है क्योंकि मैं समस्या को वाक्यांश देने की कोशिश कर रहा हूं।

मेरे पास इस तरह की ".m" प्रविष्टियों की एक सूची है

Foo.m
  Bar.m

मैं '.h' के साथ हर '.m' को प्रतिस्थापित करना चाहता हूं, क्रमबद्ध और समान वस्तुओं को इस तरह रखना चाहता हूं।

cat ../classes.txt | sed 's/\.m/\.h/' | sort -u

यह मुझे केवल '.h' प्रविष्टियों के समान सूची देता है, यानी।

Foo.h
  Bar.h

दूसरा भाग उपरोक्त शीर्षकों को आयात करने वाली प्रत्येक फ़ाइल को स्टडआउट करने के बारे में है।

यानी एक साधारण प्रविष्टि के लिए, ऐसा लगता है

echo Foo.h | xargs -I file find Classes -name \*.m -exec grep -q 'import "file' {} \; -print

हालांकि, पहली बार दूसरे के आउटपुट को पाइप करते समय, मुझे स्टडआउट पर कुछ भी नहीं मिलता है।

अर्थात।

cat ../classes.txt | sed 's/\.m/\.h/' | sort -u | xargs -I file find Classes -name \*.m -exec grep -q 'import "file' {} \; -print

क्या देता है?

0
@ 1_CR एक टाइपो नहीं है। #import "Foo.h" से मेल खाने के लिए यह है
जोड़ा लेखक qnoid, स्रोत
" " फ़ाइल एक टाइपो में है?
जोड़ा लेखक iruvar, स्रोत
यहां काम कर रहा है। सुनिश्चित करें कि आपके पथ सही हैं? इसके अलावा आप अपने पाइप के बीच tee का उपयोग करके 'देख' सकते हैं कि उन्हें क्या गुजर रहा है, उदा। .. sort -u | tee/dev/stderr | xargs ..
जोड़ा लेखक damienfrancois, स्रोत
xargs -t (stderr पर प्रिंट कमांड) का उपयोग करने का प्रयास करें यह देखने के लिए कि क्या यह जारी करने वाला प्रत्येक आदेश वह है जो आप उम्मीद करते हैं।
जोड़ा लेखक adurdin, स्रोत

2 उत्तर

मुझे यकीन नहीं है कि मैं जवाब देने के लिए पर्याप्त अनुसरण करता हूं कि आप जो व्यवहार देख रहे हैं उसे क्यों देख रहे हैं, लेकिन एक विकल्प के रूप में मैं इस तरह कुछ कोशिश करता हूं:

while read line; do
   find Classes -iname "*.m" -exec grep -q "import \"${line}" '{}' ;\
done < ../classes.txt | sort -u
1
जोड़ा

@ Adurdin की प्रतिक्रिया का उपयोग करके, पता चला कि आदेश था

{} ; -print -name *.m -exec grep -q import "Foo.h

जो ज्यादा समझ में नहीं आया। फिर एहसास हुआ कि class.txt फ़ाइल में सीआरएलएफ लाइन टर्मिनेटर थे जो इसे दबाते थे।

यूनिक्स प्रारूप में समाप्त होने वाली रेखा को बदलना, एक आकर्षण की तरह काम करता है।

0
जोड़ा