ฉันมีไฟล์ที่มีเนื้อหาดังต่อไปนี้:
(((jfojfojeojfow
//
hellow_rld
(((jfojfojeojfow
//
hellow_rld
ฉันจะแยกทุกบรรทัดที่ขึ้นต้นด้วยวงเล็บได้อย่างไร
ฉันมีไฟล์ที่มีเนื้อหาดังต่อไปนี้:
(((jfojfojeojfow
//
hellow_rld
(((jfojfojeojfow
//
hellow_rld
ฉันจะแยกทุกบรรทัดที่ขึ้นต้นด้วยวงเล็บได้อย่างไร
คำตอบ:
^
สัญลักษณ์สำหรับจุดเริ่มต้นของบรรทัดคือ ดังนั้นในการพิมพ์ทุกสายที่มีตัวอักษรตัวแรกเป็น(
ที่คุณต้องการเพื่อให้ตรงกับ^(
:
grep
grep '^(' file
sed
sed -n '/^(/p' file
การใช้ perl
perl -ne '/^\(/ && print' foo
เอาท์พุท:
(((jfojfojeojfow
(((jfojfojeojfow
คำอธิบาย (ส่วน regex)
/^\(/
^
ยืนยันตำแหน่งที่จุดเริ่มต้นของสตริง\(
ตรงกับตัว(
อักษรอย่างแท้จริงนี่คือbash
หนึ่งซับ:
while IFS= read -r line; do [[ $line =~ ^\( ]] && echo "$line"; done <file.txt
ที่นี่เรากำลังอ่านอินพุตแต่ละบรรทัดและหากบรรทัดขึ้นต้นด้วย(
บรรทัดนั้นจะถูกพิมพ์ [[ $i =~ ^\( ]]
การทดสอบหลักจะกระทำโดย
การใช้python
:
#!/usr/bin/env python2
with open('file.txt') as f:
for line in f:
if line.startswith('('):
print line.rstrip()
ที่นี่line.startswith('(')
ตรวจสอบว่าบรรทัดเริ่มต้นด้วย(
ถ้าเป็นเช่นนั้นจะมีการพิมพ์บรรทัด
awk '/^\(/' testfile.txt
ผลลัพธ์
$ awk '/^\(/' testfile.txt
(((jfojfojeojfow
(((jfojfojeojfow
ในฐานะที่เป็นงูหลามหนึ่งซับ:
$ python -c 'import sys;print "\n".join([x.strip() for x in sys.stdin.readlines() if x.startswith("(")])' < input.txt
(((jfojfojeojfow
(((jfojfojeojfow
หรืออีกทางหนึ่ง:
$ python -c 'import sys,re;[sys.stdout.write(x) for x in open(sys.argv[1]) if re.search("^\(",x)]' input.txt
look
เป็นหนึ่งในยูทิลิตี้ Unix ที่คลาสสิค แต่ไม่ค่อยมีคนรู้จักซึ่งปรากฏย้อนกลับไปใน AT&T Unix เวอร์ชั่น 7 จากman look
:
ยูทิลิตี้ค้นหาแสดงบรรทัดใด ๆ ในไฟล์ที่มีสตริงเป็นส่วนนำหน้า
ผลลัพธ์:
$ look "(" input.txt
(((jfojfojeojfow
(((jfojfojeojfow
คุณสามารถทำสิ่งที่ตรงกันข้าม
grep -v '^[^(]' file
หรือ
sed '/^[^(]/d' file
ใช้คำสั่ง grep สำหรับสิ่งนี้ สมมติว่าไฟล์ที่มีเนื้อหาดังกล่าวเรียกว่า t.txt:
user:~$ grep '^(' t.txt
(((jfojfojeojfow
(((jfojfojeojfow
ด้วย '--color' เป็นอาร์กิวเมนต์เพิ่มเติมคุณสามารถเห็นสีในเทอร์มินัลสิ่งที่ตรงกัน คำสั่งนี้ยังไม่ตรงกับบรรทัดว่าง
(
ไม่ใช่เฉพาะบรรทัดที่ขึ้นต้นด้วยหนึ่งบรรทัด