2011-08-04 14 views
6

के साथ Grep 503 त्रुटियों वाली लाइनों के लिए त्रुटि लॉग स्कैन करने का प्रयास कर रहा हूं, इसलिए मैं " 503 (उद्धरण स्थान 503) के लिए grepping कर रहा हूँ।उद्धरण चिह्न

यह सरल लगता है, लेकिन यह काम नहीं करेगा:

grep '" 503 ' access.log 

मैं निम्न त्रुटि:

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

+1

यह काम करना चाहिए। आप सुनिश्चित हैं कि आपने grep या कुछ ऐसा नहीं किया है? "कौन सी grep"? "grep टाइप करें"? – pyroscope

+0

त्रुटि संदेश "bash -c" दिखाता है, तो क्या आप सिंगल कोट्स के अंदर सिंगल कोट्स को एम्बेड करने का प्रयास करने की तरह कुछ कर रहे हैं? –

+0

हम्म, मेरे पास यह है कि आपके पास यह है कि आपके पास –

उत्तर

0

यह समस्या .bashrc में कुछ ग़लत निर्देशों के कारण थी।

8

लगता है जैसे आप() कुछ प्रणाली के माध्यम से यह चल रहे हैं कुछ भाषा में, क्या तुम नहीं हो प्रयास करें:

grep '\" 503 ' access.log 

या:

grep "\" 503 " access.log 
खोल में

सीधे बस grep '" 503 ' access.log काम करेंगे। अपनी समस्या को पुन: पेश करने के लिए मुझे यह करना होगा:

bash -c 'grep '\" 503 ' access.log' 

यह वास्तव में वाक्यविन्यास त्रुटि है। है कि काम करने के लिए, मैं की जरूरत है:

bash -c 'grep "\" 503 " access.log' 

आप किसी भी तरह bash -c ... बुला रहे हैं। शायद परोक्ष रूप से। आपको यह समझने की जरूरत है कि टकराव में कौन से उद्धरण हैं, यह जानने के लिए इसे कैसे कहा जाता है।

+0

नहीं, सीधे खोल में भागते हैं। मैंने आपके द्वारा सुझाए गए दोनों उदाहरणों की कोशिश की है। – dtbarne

+0

यह अजीब है। क्या आप "टाइप grep" और "echo $ 0" का आउटपुट पोस्ट कर सकते हैं? –

1

इस तरह के अजीब प्रभावों को डीबग करने के लिए, खोल विस्तार दिखाने के लिए "set -x" का उपयोग करें, और कंप्यूटर आपके आदेश के बारे में क्या सोचता है।

0

मुझे विश्वास है कि अब यह काम कर रहा है (यकीन नहीं है क्योंकि मुझे कोई परिणाम नहीं मिला है, लेकिन कोई त्रुटि नहीं मिली है)।

कारण यह है कि मैं निम्नलिखित और मेरा मानना ​​है कि SSH कुछ बच प्रवंचना कर रहा है की तरह एक ssh आदेश के माध्यम से इसे पारित कर रहा हूँ:

:

ssh 123.123.123.123 grep '" 503 ' access.log 

इस लिए यह modifiying ठीक हो रहा है

ssh 123.123.123.123 "grep '\" 503 ' access.log" 

हर किसी के लिए धन्यवाद।

+2

यह एसएसएच नहीं है जो चालबाजी कर रहा है, यह खोल है। आपका स्थानीय खोल एकल उद्धरण चिह्नों का अर्थ देता है, और उन्हें '503' तर्क से स्ट्रिप करता है, फिर उन तर्कों को ssh। Ssh में पास करता है, फिर रिमोट सिस्टम पर खोल के लिए अपरिवर्तित तर्कों को अपरिवर्तित करता है। वह खोल देखता है एक बेजोड़ डबल-कोट चरित्र। (इसके मुकाबले शायद थोड़ा और अधिक है, लेकिन यह सामान्य विचार है।) –

+0

@ किथ बिल्कुल सही है।चूंकि आपका कमांड दो बार व्याख्या करता है (एक बार आपके स्थानीय खोल और रिमोट शैल द्वारा दूसरी बार) जिसे सामान्य रूप से उद्धृत किया जाना चाहिए, उसे दो बार उद्धृत किया जाना चाहिए। – jw013

+0

धन्यवाद, हालांकि मुझे इसके बारे में पता था। यह चाल चलाना आसान था। :) – dtbarne

संबंधित मुद्दे