ใช้ grep เพื่อค้นหาข้อความด้วยเครื่องหมายคำพูดเดี่ยว?


14

ฉันใช้ gedit text editor พร้อม terminal terminal ใน Ubuntu 12.04 grepฉันพยายามที่จะค้นหาข้อความบางส่วนใช้ ฉันต้องการค้นหารหัสบรรทัดนี้

'type' => 'select'

ฉันเหนื่อย:

grep -r '\'type\' => \'select\''

แต่grepไม่ได้ผลลัพธ์ใด ๆ

ดังนั้นใครบางคนกรุณาบอกวิธีการค้นหารหัสด้านบนได้ไหม

คำตอบ:


17

ล้อมรอบสตริงการค้นหาของคุณด้วยเครื่องหมายคำพูดคู่:

grep "'type' => 'select'"

7

คุณไม่สามารถหลีกเลี่ยงคำพูดเดี่ยวที่ปรากฏในเครื่องหมายคำพูดเดี่ยวได้ ตามที่อธิบายไว้ใน [คู่มือทุบตี] :( http://www.gnu.org/software/bash/manual/bashref.html#Single-Quotes ):

การใส่อักขระในเครื่องหมายคำพูดเดี่ยว ('' ') จะเก็บค่าตามตัวอักษรของแต่ละอักขระไว้ในเครื่องหมายคำพูด อ้างเดียวอาจไม่ได้เกิดขึ้นระหว่างราคาเดียวแม้ในขณะที่นำหน้าด้วยเครื่องหมาย

ดังนั้นคุณต้องใช้วิธีการต่าง ๆ :

  1. ใช้เครื่องหมายคำพูดคู่:

    grep  "'type' => 'select'" file 
    
  2. หากคุณต้องการโซลูชันที่ซับซ้อนโดยไม่จำเป็น:

    grep  "'"type"'"\ =\>\ "'"select"'" file 
    
  3. คุณสามารถค้นหาอักขระเดี่ยวใด ๆ แทนการระบุคำพูดเดี่ยว:

    grep  '.type. => .select.' file 
    

แต่เพียงใช้"มันทำให้สิ่งต่าง ๆ ตรงไปตรงมามากขึ้น


ถ้าสตริงที่ฉันค้นหาอยู่ในไฟล์ php และมีตัวแปรอยู่ล่ะ? ฉันกำลังดิ้นรนกับอันนี้จริงๆ
Aubrey Robertson

@AubreyRobertson ฉันต้องการตัวอย่างที่จะตอบอย่างถูกต้อง หากคุณต้องการหาบางอย่างเช่นสตริง$varคุณสามารถทำได้grep '$var' file.phpด้วยเครื่องหมายคำพูดเดี่ยว สำหรับรายละเอียดเพิ่มเติมกรุณาโพสต์คำถามใหม่และฝากความคิดเห็นไว้ที่นี่ ฉันยินดีที่จะช่วย
terdon

ฉันคิดออก ไม่ใช่สัญญาณดอลลาร์ที่ทำผิดพลาด grep ของฉันมันเป็นการอ้างอิงอาร์เรย์ (วงเล็บเหลี่ยม) เพราะ grep ใช้มันเพื่อ regex นี่คือบรรทัดที่ฉันพยายาม grep: $output = $info['function']($variables); ฉันต้องหนีพวกเขาอย่างถูกต้องด้วยแบ็กสแลชคู่ นี่คือคำสั่ง grep ของฉันหลังจากที่ทุกคนพูดและทำ:targetstring="\$output = \$info\\['function'\\](\$variables);" targetlinenumber=`grep -n "$targetfile" -e "$targetstring" | cut -d :f 1`
Aubrey Robertson

1

cdไปยังไดเรกทอรีที่มีไฟล์. txt ของคุณ

cd /path 

จากนั้น:

คุณสามารถใช้ได้ grep "'type' => 'select'" name.txt

หรือ :

`grep "'type' => 'select'" /path/file.txt

ผลผลิต:

ป้อนคำอธิบายรูปภาพที่นี่


3
คำถามเกี่ยวข้องเฉพาะเครื่องหมายคำพูดเดียวไม่ใช่โครงสร้างไดเรกทอรีหรือgrepฟังก์ชันอื่นใด (ไม่เกี่ยวข้องเล็กน้อย) ของ
Chris

@Chris แน่นอนด้วย-rตัวเลือก (เป็น OP เขียน) ชื่อไฟล์ไม่จำเป็น
Brady Trainor
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.