Xargs का उपयोग करते समय तर्क के बजाय स्टड पर पुनर्निर्देशित करें [बंद]


12

निर्वासन के लिए, कमांड का उपयोग कर

cat foo.txt | xargs -I{} -n 1 -P 1 sh -c "echo {} | echo"

foo.txtदो पंक्तियों में शामिल है

foo
bar

उपरोक्त कमांड प्रिंट कुछ भी नहीं।

जवाबों:


6
cat foo.txt | xargs -J % -n 1 sh -c "echo % | bar.sh" 

मुश्किल हिस्सा यह है कि xargs अंतर्निहित सबस्क्रिप्शन इनवॉइस करता है। यहाँ sh स्पष्ट रूप से आह्वान किया गया है और पाइप पैरेंट कन्वेयर का हिस्सा नहीं बनता है


1
धन्यवाद, मैंने अधिक संक्षिप्त उदाहरण प्रदान करने के लिए अपने प्रश्न को अपडेट किया है। लेकिन यह आपके सुझाव के अनुसार काम नहीं करता है ..
रयान

1
इको कैंटीन को स्टड से पढ़ा जाता है, इसलिए इसे पाइप करने का कोई मतलब नहीं है। इसकी तुलना करें: cat foo.bar | wc -lऔरcat foo.bar | xargs -J % -n 1 sh -c "echo % | wc -l"
कोंडायबास

1
मुझे लगता है कि आप के -Iबजाय मतलब है -J; -Jxargs का कोई विकल्प नहीं है
Hitechcomputergeek

की @Hitechcomputergeek FreeBSD के संस्करण xargsहै -Jविकल्प है कि के बराबर है -ilinux कीxargs
Kondybas

@ कोंडायबस मुझे यह बताने के लिए धन्यवाद; मुझे इस बात की जानकारी नहीं थी कि दोनों के बीच मतभेद था। आप GNU पर भरोसा कर सकते हैं POSIX lol का पालन नहीं करने के लिए। ( -JPOSIX में परिभाषित नहीं है, लेकिन -IGNU की तुलना में इसका एक अलग उपयोग है।)
Hitechcomputergeek

2

यदि आप foo.txt की सभी लाइनों को प्रोसेस करना चाहते हैं तो आपको एक लूप का उपयोग करना होगा। &प्रक्रिया को पृष्ठभूमि में रखने के लिए उपयोग करें

while read line; do
   echo $line | bar.sh &
done < foo.txt

यदि आपके इनपुट में रिक्त स्थान हैं, तो आंतरिक क्षेत्र विभाजक को नई रेखा पर अस्थायी रूप से सेट करें

# save the field separator
OLD_IFS=$IFS

# new field separator, the end of line 
IFS=$'\n'

for line in $(cat foo.txt) ; do
   echo $line | bar.sh &
done

# restore default field separator  
IFS=$OLD_IFS     

नहीं-नहीं, मैं भी इसके साथ फंस गया हूं। TS फाइल को अलग लाइनों में विभाजित करना चाहते हैं और उन्हें स्क्रिप्ट में स्वतंत्र रूप से फीड करना चाहते हैं
कोंडायबास

1
मुझे प्रक्रिया को समानांतर करने के लिए xargs का उपयोग करने की आवश्यकता है ..
रयान

ठीक है :-) मैंने अभी xargsउपयोग किए गए ओपी के विकल्पों को देखा ।
मत्तेओ
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.