คำถามติดแท็ก grep

สำหรับคำถามเกี่ยวกับ grep เครื่องมือบรรทัดคำสั่งสำหรับค้นหารูปแบบข้อความในไฟล์ ใช้แท็กนี้สำหรับคำถามเกี่ยวกับ grep หรือคำถามเกี่ยวกับปัญหาที่เกิดขึ้นจากการใช้เครื่องมือบรรทัดคำสั่ง grep

2
ลบทุกบรรทัดที่ไม่มีอักขระ n ก่อนตัวคั่น
ฉันมีไฟล์ข้อความที่ยาวมาก (จากที่นี่ ) ซึ่งควรมีอักขระฐานสิบหก 6 ตัวและ 'ตัวแบ่ง' (ซึ่งปรากฏเป็นอักขระตัวเดียวและดูเหมือนจะไม่แสดงอย่างถูกต้องในการทำเครื่องหมายรหัสด้านล่าง) ตามด้วยคำสองสามคำ: 00107B Cisco Systems, Inc 00906D Cisco Systems, Inc 0090BF Cisco Systems, Inc 5080 Cisco Systems, Inc 0E+00 ASUSTek COMPUTER INC. 000C6E ASUSTek COMPUTER INC. 001BFC ASUSTek COMPUTER INC. 001E8C ASUSTek COMPUTER INC. 0015F2 ASUSTek COMPUTER INC. 2354 ASUSTek COMPUTER INC. 001FC6 …

4
วิธีที่จะทำให้การค้นหาสตริงด้วยคำสั่ง grep เป็นคำสั่ง if?
ฉันต้องการค้นหาหลายสายในสองไฟล์ หากพบหนึ่งสตริงในไฟล์ทั้งสองให้สร้างบางอย่าง หากพบหนึ่งสตริงในไฟล์เดียวให้สร้างอีกอย่าง คำสั่งของฉันคือต่อไป: ####This is for the affirmative sentence in both files if grep -qw "$users" "$file1" && grep -qw "$users" "$file2"; then ####This is for the affirmative sentence in only one file, and negative for the other one if grep -qw "$users" "$file1" ! grep -qw "$users" "$file2"; …

3
วิธีใช้ grep เพื่อค้นหาบรรทัดที่มีหนึ่งในสองคำ แต่ไม่ใช่ทั้งสองอย่าง?
ฉันต้องการค้นหาบรรทัดด้วย 'word1' XOR 'word2' ในไฟล์ข้อความ ดังนั้นควรแสดงผลลัพธ์ด้วย word1, word2 แต่ไม่ใช่บรรทัดที่มีทั้งสองคำนี้ ฉันต้องการใช้ XOR แต่ฉันไม่รู้วิธีเขียนในบรรทัดคำสั่ง linux ฉันเหนื่อย: grep 'word1\|word2' text.txt grep word1 word2 text.txt grep word1 text.txt | grep word2 grep 'word1\^word2' text.txt และอื่น ๆ อีกมากมาย แต่ไม่สามารถทำได้

8
นับจำนวนบรรทัดว่างที่ท้ายไฟล์
ฉันมีไฟล์ที่มีบรรทัดว่างที่ท้ายไฟล์ ฉันสามารถใช้grepเพื่อนับจำนวนบรรทัดว่างท้ายไฟล์ด้วยชื่อไฟล์ที่ถูกส่งเป็นตัวแปรในสคริปต์ได้หรือไม่

2
จับคู่กับ grep เมื่อรูปแบบมีเครื่องหมายยัติภังค์“ -”
ฉันเขียนคำสั่งต่อไปนี้เพื่อให้ตรงกับ $ a กับ $ b แต่เมื่อค่ารวมถึง "-" แล้วฉันได้รับข้อผิดพลาด ฉันจะหลีกเลี่ยงสิ่งนั้นได้อย่างไร # a="-Xmx5324m" # b="-Xmx5324m" # # # echo "$a" | grep -Fxc "$b" grep: conflicting matchers specified

3
วิธี grep ไฟล์หลายพันไฟล์ในไดเรกทอรีสำหรับร้อยสตริงในไฟล์
ฉันกำลังพยายามเขียนgrepข้อความและมันกำลังฆ่าฉัน ฉันยังเบื่อที่จะได้รับarguments list too longข้อผิดพลาด subset.txtฉันมีไฟล์ขอเรียกว่า MO43312948มันมีหลายร้อยสายกับสตริงที่เฉพาะเจาะจงเช่น ในไดเรกทอรีวัตถุของฉันฉันมีหลายพันไฟล์และฉันต้องการคัดลอกไฟล์ทั้งหมดที่มีสตริงที่ระบุไว้ในsubset.txtไดเรกทอรีอื่น ฉันพยายามเริ่มต้นด้วยสิ่งนี้เพียงแค่คืนไฟล์ที่ตรงกันจากไดเรกทอรีวัตถุ grep -F "$(subset.txt)" /objects/* ฉันได้รับ `bash: / bin / grep: รายการอาร์กิวเมนต์ยาวเกินไป ''
11 grep 

3
ไม่พบอินพุตของฉันในสตริงโดยใช้ grep
ฉันมีสตริงคั่นด้วยเครื่องหมายจุลภาคที่ฉันต้องการค้นหาอินพุตของฉันในบรรทัดนั้น: echo US | grep "US,CA,CH,JP" เอาต์พุตว่างเปล่า! ฉันจะใช้ grep เพื่อค้นหาอินพุตของฉันในสตริงนั้นได้อย่างไร
11 grep 

3
วิธีการขยายนามแฝง bash
วิธีสร้างนามแฝงที่ขยายชื่อแทนอีกชื่อหนึ่งใน Bash จริง ๆ ทำไม: ผมเคยได้GREP_OPTIONSตั้งอยู่บน.bashrcบางสิ่งบางอย่างเช่นนี้ GREP_OPTIONS="-I --exclude=\*~" ฉันยังมีสคริปต์ (ให้เราพูดsetup-java.sh) ซึ่งฉันจะโทรก่อนทำงานกับโปรเจ็กต์ Java บางตัว มันจะมีบรรทัด: GREP_OPTIONS="$GREP_OPTIONS --exclude-dir=classes" ถ้าฉันใช้ Sass ด้วยฉันจะโทรหาsetup-sass.shซึ่งมีบรรทัด: GREP_OPTIONS="$GREP_OPTIONS --exclude-dir=\*/.sass-cache" แต่GREP_OPTIONSเลิกใช้แล้วและเห็นได้ชัดว่าโซลูชันมาตรฐานคือสร้างนามแฝงหรือสคริปต์บางอย่าง ...
11 bash  grep  alias 

2
วิธีการเปิด manpage grep (1p)?
ในตอนท้ายของman grepมันก็บอกว่า SEE ALSO\ POSIX Programmer's Manual Page grep(1p). ฉันไม่สามารถเปิด manpage grep(1p)ได้ ฉันจะทำอย่างไร ค้นหา net, Unix.SE และลองผิดลองถูก แต่ยังไม่มีโชค พยายาม $ man 1p grep $ man -K grep แก้ไข: ฉันใช้ Ubuntu 14.10
11 grep  man  posix 


3
วิธี grep สำหรับ unicode ในสคริปต์ทุบตี
if grep -q "�" out.txt then echo "working" else cat out.txt fi โดยทั่วไปหากไฟล์ "out.txt" มี " " ที่ใดก็ได้ในไฟล์ฉันต้องการให้เสียงก้อง "ทำงาน" และถ้าไฟล์ "out.txt" นั้นไม่มี " " ที่ใดก็ตามในไฟล์ฉันก็อยาก มันเพื่อ cat out.txt แก้ไข: ดังนั้นนี่คือสิ่งที่ฉันทำ ฉันกำลังพยายามที่จะเปิดใช้งานการถอดรหัส openssl openssl enc ส่งคืนค่า 0 เมื่อสำเร็จไม่ใช่ค่าศูนย์ หมายเหตุ: คุณจะได้รับผลบวกปลอมเนื่องจาก AES / CBC สามารถกำหนดได้ว่า "การถอดรหัสทำงานได้" หรือไม่ขึ้นอยู่กับการรับสิทธิ์ ดังนั้นไฟล์ถอดรหัส แต่มันจะไม่เป็นรหัสผ่านที่ถูกต้องดังนั้นมันจะมีซึ่งพูดพล่อยๆในนั้น อักขระทั่วไปในการพูดพล่อยๆคือ " " …

2
จะค้นหาข้อความในไฟล์โดยไม่สนใจบรรทัดใหม่ได้อย่างไร
ฉันต้องการค้นหาข้อความที่อาจแบ่งออกเป็นหลายบรรทัดในไฟล์ grep ที่จะละเว้นการแบ่งบรรทัดและส่งคืนช่วงการจับคู่ของบรรทัด เช่นฉันจะค้นหาis an example fileและคาดหวังว่าจะพบได้ในไฟล์ต่อไปนี้: นี่คือ ไฟล์ตัวอย่าง การไม่ขึ้นอยู่กับช่องว่างนำหน้าหรือตามหลังการละเว้นพื้นที่สีขาวทั้งหมดในรูปแบบทั้งหมดอาจดีที่สุด (โดยหลักการแล้วการปฏิบัติตามลำดับของพื้นที่สีขาวเป็นพื้นที่เดียว) ทางออกที่ไม่เหมาะอย่างหนึ่งคือtr '\n' ' ' | grepการจำแนกระหว่างการจับคู่และการจับคู่ที่ไม่ตรงกัน แต่ไม่แสดงการจับคู่หรือจัดการกับไฟล์ขนาดใหญ่ได้ดี

7
จะหาตำแหน่งของตัวละครโดยใช้ grep ได้อย่างไร?
ฉันต้องการระบุตำแหน่งของอักขระในสตริงโดยใช้คำสั่ง grep RAMSITALSKHMAN|1223333ตัวอย่างเช่นสตริง grep -n '[^a-zA-Z0-9\$\~\%\#\^]' ฉันจะค้นหาตำแหน่งของ|ในสตริงที่กำหนดได้อย่างไร

3
ด้วย grep ฉันจะจับคู่รูปแบบและกลับเข้ากับรูปแบบอื่นได้อย่างไร
ด้วยgrepฉันต้องการเลือกทุกบรรทัดที่ตรงกับรูปแบบและไม่ตรงกับรูปแบบอื่น ฉันต้องการที่จะใช้การร้องขอเพียงครั้งเดียวgrepเพื่อให้ฉันสามารถใช้--after-contextตัวเลือก (หรือ--before-context, หรือ--context) -vไม่สามารถใช้งานได้ที่นี่เนื่องจากมันขัดแย้งกับรูปแบบทั้งหมดที่ฉันส่งผ่านไปยังการgrepใช้-eตัวเลือก ตัวอย่าง ฉันต้องการค้นหาการจับคู่บรรทัดneedleละเว้นการจับคู่บรรทัดignore meด้วยบริบทต่อไปนี้หนึ่งบรรทัด นี่คือไฟล์อินพุตของฉัน: one needle ignore me two three four needle five ผลลัพธ์ที่ฉันต้องการคือ: four needle five อย่างที่คุณเห็นโซลูชั่นไร้เดียงสานี้ไม่ทำงาน: $ cat file | grep --after-context=1 needle | grep -v 'ignore me' two --- four needle five
11 grep 

2
จะลบหลายบรรทัดต่อการเกิดขึ้นในไฟล์ได้อย่างไร?
สมมติว่าฉันมีไฟล์บรรทัดนี้ 857835 มีเนื้อหาดังนี้: a1 rubbish1 rubbish2 rubbish3 rubbish4 a1 rubbish5 rubbish6 rubbish7 rubbish8 และฉันต้องการที่จะลบสิ่งที่เกิดขึ้นทั้งหมดa1และบรรทัดถัดไป ( rubbish1และrubbish5ในตัวอย่างนี้) ฉันต้องทำอย่างไร? ฉันพยายามที่grep 'a1' -v -A1จะไม่เกิดประโยชน์และความสามารถของฉันไม่ดีนัก:} Google-fu ของฉันไม่สามารถช่วยฉันได้ในครั้งนี้มีคนช่วยด้วย!

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