จะรับหมายเลขบรรทัดจาก grep ได้อย่างไร


18

grep ต่อไปนี้

grep -r -e -n coll *

จะแสดง

fullpath/filename:  <tag-name>coll</tag-name>

ฉันต้องการทราบว่าบรรทัดใดมีข้อความต่อไปนี้ฉันพยายามเพิ่ม-nแต่มันไม่ทำงาน ฉันพยายามเพิ่ม | grep -n *แต่มันก็ทำอะไรแปลก ๆ

สิ่งที่ฉันต้องการจะดู (ฉันไม่สนใจรูปแบบ) คือ

fullpath/filename:10:  <tag-name>coll</tag-name>

1
ฉันเห็นหมายเลขบรรทัดเมื่อใช้-nตัวเลือก คุณสามารถโพสต์เอาท์พุทของสิ่งที่คุณได้รับ?
Kris Harper

คำตอบ:



15

ไม่จำเป็นต้องใช้ -r & -e!

รับหมายเลขบรรทัดของลวดลาย!

grep -n "pattern" file.txt

ถ้าคุณต้องการที่จะได้รับเพียงจำนวนบรรทัดเป็นเอาท์พุทเพิ่มคำสั่ง grep อื่นไป!

grep -n "pattern" file.txt | grep -Eo '^[^:]+'

1
เพื่อให้ได้หมายเลขบรรทัดมันง่ายต่อการใช้งานcutเช่นcut -f1 -d:
wjandrea

1

ในการ grep รูปแบบในไฟล์เฉพาะและรับบรรทัดที่ตรงกัน:

grep -n <Pattern> <File> | awk -F: '{ print $1 }' | sort -u

หรือใช้cutตามที่แนะนำโดย @wjandrea:

grep -n <Pattern> <File> | cut -f1 -d: | sort -u

ที่ไหน

  • <Pattern>เป็นรูปแบบที่ยกมา glob (ใช้ตัวเลือก-Eสำหรับ regexp);
  • <File> เป็นไฟล์ที่คุณสนใจ
  • ไพพ์แรกawk ...กรองหมายเลขบรรทัดในเอาต์พุตของ grep (ก่อนหน้านี้:ในแต่ละบรรทัด);
  • ไปป์ที่สองทำให้แน่ใจว่าหมายเลขบรรทัดปรากฏขึ้นเพียงครั้งเดียว

เพื่อให้ได้เพียงหมายเลขบรรทัดมันใช้งานง่ายcutกว่า Awk เช่นcut -f1 -d:
wjandrea

@wjandrea ง่ายขึ้นในทางใด?
Sheljohn

ฉันหมายถึงวากยสัมพันธ์นั้นง่ายขึ้น
wjandrea

@wjandrea มันฟังดูมีวัตถุประสงค์มาก
Sheljohn

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