2013-02-25 100 views
6

मेरे पास मेकफ़ाइल में निम्न कोड स्निपेट है जो हमेशा विफल रहता है जब तक कि मैं नीचे & grep के संदर्भों को हटा नहीं देता।मैं मेकफ़ाइल शेल कमांड में पाइप का उपयोग कैसे करूं?

TAB=$(shell printf "\t") 
all: abstract.tsv 
     $(shell cut -d "${TAB}" -f 3 abstract.tsv | sed "s/^\s*//" | \ 
     sed "s/\s*$//" | grep -v "^\s*$" | sort -f -S 300M | \ 
     uniq > referenced_images.sorted.tsv) 

यह है त्रुटि मैं:

/bin/bash: -c: line 0: unexpected EOF while looking for matching `"' 
/bin/bash: -c: line 1: syntax error: unexpected end of file 

क्या गलत हो सकता है?

+1

संभवत: http://stackoverflow.com/questions/2382764/escaping-in-makefile –

+1

का एक डुप्लिकेट बस एफवाईआई, sed के दो आमंत्रण और grep में से एक को sed के एक उदाहरण में जोड़ा जा सकता है: 'sed -ne '/^\ s * $$ /! {s/^ \ s * //; s/\ s * $$ //; p;}' 'प्रारंभिक पैटर्न केवल स्थान रखता है, और खाली रेखाएं संशोधित होने से या का प्रदर्शन किया। (मैंने निश्चित रूप से मेक के लाभ के लिए $ s दोगुना कर दिया है।) – William

उत्तर

17

sed से एक त्रुटि आ रही है। जब आप लिखें:

sed "s/\s*$//" 

मेकअप रिक्त स्ट्रिंग पर चर $/ फैलता है, इसलिए एसईडी परिसीमक याद आ रही है। प्रयास करें:

sed "s/\s*$$//" 

का उपयोग $"grep में एक ही समस्या खड़ी कर रहा है। इसके बजाय grep -v "^\s*$$" का उपयोग करें।