Score:0

การจับคู่รูปแบบ Grep ไม่ทำงานใช่ไหม

ธง bd

ฉันมีไฟล์ข้อความดังนี้:

"รหัส","ชื่ออำเภอ","ชื่อย่าน","ถนน","วันธรรมดา","เดือน","วัน","ชั่วโมง","บางส่วนของวัน","บาดเจ็บเล็กน้อย","บาดเจ็บสาหัส" ,"ผู้ประสบภัย","ยานพาหนะที่เกี่ยวข้อง","ลองจิจูด","ละติจูด"
"2017S008429 ","ไม่ทราบ","ไม่ทราบ","Número 27 ","วันศุกร์","ตุลาคม",13,8,"เช้า",2,0,2,2,2.12562442,41.34004482
"2017S007316 ","Unknown","Unknown","Número 3 Zona Franca / Número 50 Zona Franca ","Friday","September",1,13,"Morning",2,0,2,2,2.12045245, 41.33942606
"2017S010210 ","ไม่ทราบ","ไม่ทราบ","Litoral (Besòs) ","วันศุกร์","ธันวาคม",8,21,"บ่าย",5,0,5,2,2.1673561,41.3608855
"2017S006364 ","ไม่ทราบ","ไม่ทราบ","Número 3 Zona Franca ","วันศุกร์","กรกฎาคม",21,2,"กลางคืน",1,0,1,2,2.12452894,41.33766786
"2017S004615 ","Sant MartÃ","el Camp de l'Arpa del Clot","Las Navas de Tolosa ","วันพฤหัสบดี","พฤษภาคม",25,14,"บ่าย",1,0,1,3 ,2.185272,41.416365
"2017S007775 ","Sant MartÃ","el Camp de l'Arpa del Clot","Indústria / Trinxant ","วันพุธ","กันยายน",20,12,"เช้า",1,0,1,2, 2.183245,41.416336
"2017S004484 ","Sant MartÃ","el Camp de l'Arpa del Clot","Trinxant / Indústria ","วันเสาร์","พฤษภาคม",20,21,"บ่าย",1,0,1,2, 2.183245,41.416336
"2017S010680 ","Sant MartÃ","el Camp de l'Arpa del Clot","Indústria ","วันอังคาร","ธันวาคม",26,20,"บ่าย",2,0,2,1,2.183561, 41.416372
"2017S005152 ","Sant MartÃ","el Camp de l'Arpa del Clot","Indústria ","Monday","มิถุนายน",12,15,"บ่าย",1,0,1,1,2.184059, 41.416763
"2017S003932 ","Sant MartÃ","el Camp de l'Arpa del Clot","Maragall ","วันพุธ","พฤษภาคม",3,20,"บ่าย",1,0,1,1,2.181225, 41.413958
"2017S010348 ","Sant MartÃ","el Camp de l'Arpa del Clot","Indústria ","วันพฤหัสบดี","ธันวาคม",14,20,"บ่าย",1,0,1,2,2.18229, 41.415772
"2017S000245 ","Sant MartÃ","el Camp de l'Arpa del Clot","ST ANTONI M CLARET / Pg Maragall ","วันพุธ","มกราคม",11,7,"เช้า",1,0, 1,2,2.180453,41.41579
"2017S005695 ","Sant MartÃ","el Camp de l'Arpa del Clot","Sant Antoni Maria Claret / Guinardó ","วันศุกร์","30,12 มิถุนายน,"เช้า",1,0,1 ,2,2.18114,41.416295
"2017S007384 ","Sant MartÃ","el Camp de l'Arpa del Clot","Sant Antoni Maria Claret ","วันจันทร์","กันยายน",4,16,"บ่าย",0,1,1,2 ,2.176324,41.412546
"2017S008080 ","Sant MartÃ","el Camp de l'Arpa del Clot","Sant Antoni Maria Claret ","วันเสาร์","กันยายน",30,19,"บ่าย",1,0,1,2 ,2.176324,41.412546
"2017S003439 ","Sant MartÃ","el Camp de l'Arpa del Clot","Còrsega / Còrsega ","Monday","April",17,14,"บ่าย",1,0,1,2, 2.178314,41.410784
"2017S002410 ","Sant MartÃ","el Camp de l'Arpa del Clot","CÃRSEGA / Dos de Maig ","วันเสาร์","มีนาคม",25,14,"บ่าย",4,0, 4,2,2.177719,41.410323
"2017S009296 ","Sant MartÃ","el Camp de l'Arpa del Clot","Indústria ","วันพฤหัสบดี","พฤศจิกายน",22 พฤศจิกายน,"กลางคืน",1,0,1,1,2.17674, 41.411445

ฉันลองบางอย่างเช่น:

grep "25 พฤษภาคม" $1

ที่ไหน $1 เป็นชื่อไฟล์ที่ผู้ใช้ป้อน ดังนั้นโดยพื้นฐานแล้วมันควรจะหาแถวที่มีวันที่ 25 พฤษภาคม แต่มันไม่มีอะไรแสดงเลย ฉันรู้ว่ามีแถวที่มีวันที่ 25 พฤษภาคม

ฉันได้ลองสิ่งต่อไปนี้แล้ว แต่ก็ยังใช้งานไม่ได้:

grep "\"พฤษภาคม\" ,25" $1

ผมทำอะไรผิดหรือเปล่า?

Score:2
ธง hr

เครื่องหมายคำพูดเป็นอักขระด้วย - ไฟล์ของคุณไม่มี พฤษภาคม 25ประกอบด้วย "พฤษภาคม",25. ดังนั้น

grep '"พฤษภาคม",25' "$1"

หรือ

grep "\"พฤษภาคม\",25" "$1"

(แต่ ไม่ grep "\"พฤษภาคม\" ,25" "$1" - ช่องว่างเป็นอักขระเช่นกัน)

หรือคุณสามารถใช้เครื่องมือรับรู้ CSV ที่เข้าใจการอ้างอิง CSV:

mlr --csv filter 'เดือน == "พฤษภาคม" && วัน == 25'

csvgrep -c เดือน -m พฤษภาคม "$1" | csvgrep -c วัน -m 25
Yunfei Chen avatar
bd flag
แค่สงสัยว่าฉันมีไฟล์อย่าง file1.txt ที่มีวันที่ทั้งหมดในรูปแบบแบบนี้ เหมือนมี "พฤษภาคม"25 และฉันต้องการค้นหาวันที่ในไฟล์นี้ที่ตรงกับวันที่อีกอันหนึ่ง ดังนั้น ฉันลอง ```cat file1.txt | xargs -I{} grep -E {} "$1"``` แต่เห็นได้ชัดว่าใช้ไม่ได้เพราะต้องใส่เครื่องหมายคำพูดเป็น Escape มีวิธีแก้ไขง่ายๆ สำหรับสิ่งนี้หรือไม่
hr flag
@YunfeiChen `grep` มีความสามารถในการอ่านรายการรูปแบบจากไฟล์อยู่แล้ว (แต่ต้องเป็นหนึ่งรายการต่อบรรทัด) - `grep -f file1.txt "$1"` (หรือ `grep -F -f file1. txt "$1"` เนื่องจากวันที่เป็นสตริงตายตัวธรรมดา แทนที่จะเป็นนิพจน์ทั่วไป)

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา