2011-08-30 11 views
23

में अजीब का उपयोग करना मेरे पास एक कमांड है जो कमांड लाइन पर ठीक काम करता है, लेकिन जब मैं इसे उपनाम या फ़ंक्शन में रखने की कोशिश नहीं करता हूं।BASH उपनाम या फ़ंक्शन

$ awk '{print $1}' /tmp/textfile 
0 

यह सही है, क्योंकि '0' "टेक्स्टफाइल" की स्थिति 1 में है।

$ alias a="awk '{print $1}' /tmp/textfile" 
$ a 
1 0 136 94 

यह "टेक्स्टफाइल" में पूरी पंक्ति है। मैंने उद्धरण, कोष्ठक और बैकटिक्स की हर किस्म की कोशिश की है जिसे मैं कल्पना कर सकता हूं। मैं विभिन्न प्रकार के प्रारूपों में एक ही समस्या प्राप्त कर सकता हूं।

मुझे क्या समझ में नहीं आ रहा है? उर्फ के बजाय

awk '{print }' /tmp/textfile 

कौन सा पूरी फ़ाइल प्रिंट ...

उत्तर

40

आप $ तो तरह से बचने के लिए की जरूरत है

myfunc(){ awk '{print $1}' file; } 
+1

एएच-एचए! ओह! धन्यवाद! –

+6

इन भागों में धन्यवाद कहने के लिए प्रोटोकॉल उत्तर को सही के रूप में चिह्नित करना है (बाईं ओर छोटे चेक मार्क पर क्लिक करके)। =) – Costa

+3

+1 अगर मैं इस प्रश्न का मालिक था तो मैं खुशी से इसे उत्तर के रूप में चिह्नित करूंगा। यह एक समान समस्या हल हो गई थी जो मैं कर रहा था। – K4GDW

11

उपयोग एक समारोह:

alias a="awk '{print \$1}' /tmp/textfile" 

अन्यथा अपने अन्य नाम है:

+0

यह निश्चित रूप से अधिक लचीला समाधान है, क्योंकि यह तर्क वेक्टर को संदर्भित करने की अनुमति देता है। उदाहरण के लिए, यदि आप एक वैकल्पिक फ़ाइल नाम को एक स्पष्ट डिफ़ॉल्ट के साथ पारित करने की अनुमति देने के लिए '" $ {1: -hardcoded_filename} "का उपयोग करना चाहते हैं, तो यह यहां काम करेगा लेकिन उपनाम दृष्टिकोण में नहीं होगा। –