लाइन की शुरुआत


15

मेरे पास निम्नलिखित सामग्री के साथ एक फाइल है:

(((jfojfojeojfow 
//
hellow_rld
(((jfojfojeojfow
//
hellow_rld

मैं कोष्ठक के साथ शुरू होने वाली प्रत्येक पंक्ति को कैसे निकाल सकता हूं?


4
किसी कारण से, मैंने "समय की शुरुआत" को पढ़ा ...
मतीन उल्हाक

जवाबों:


32

एक पंक्ति की शुरुआत के लिए प्रतीक है ^। इसलिए, उन सभी लाइनों को प्रिंट करने के लिए जिनका पहला वर्ण a है (, आप मिलान करना चाहेंगे ^(:

  1. grep

    grep '^(' file
    
  2. sed

    sed -n '/^(/p' file
    

6

का उपयोग करते हुए perl

perl -ne '/^\(/ && print' foo

आउटपुट:

(((jfojfojeojfow 
(((jfojfojeojfow

स्पष्टीकरण (रेगेक्स भाग)

  • /^\(/

    • ^ स्ट्रिंग की शुरुआत में मुखर स्थिति
    • \(चरित्र से मेल खाता है (सचमुच

4

यहाँ 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('(')जांचता है कि क्या रेखा के साथ शुरू होता है (, यदि ऐसा है तो रेखा मुद्रित होती है।


3

awk

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क्लासिक लेकिन बहुत कम जाना जाता यूनिक्स उपयोगिताओं, जो एटी एंड टी यूनिक्स संस्करण 7. से में जिस तरह से वापस दिखाई दिया में से एक है man look:

लुक यूटिलिटी किसी भी लाइन को फाइल में प्रदर्शित करती है जिसमें उपसर्ग के रूप में स्ट्रिंग होती है

परिणाम:

$ look "(" input.txt
(((jfojfojeojfow 
(((jfojfojeojfow

2

आप उलटा कर सकते हैं।

grep -v '^[^(]' file

या

sed '/^[^(]/d' file

यदि इनपुट फ़ाइल में खाली लाइनें हैं, तो रिक्त लाइनें भी प्रदर्शित होती हैं।
एबी

1

इसके लिए grep कमांड का उपयोग करें। उल्लिखित सामग्री के साथ फाइल मान लेना t.txt कहलाता है:

user:~$ grep '^(' t.txt
(((jfojfojeojfow
(((jfojfojeojfow

आगे के तर्क के रूप में '- रंग' के साथ आप टर्मिनल में रंग में भी देख सकते हैं कि क्या मेल खाता है। यह निर्देश भी खाली लाइनों से मेल नहीं खाता है।


4
यह एक के (साथ शुरू होने वाले न केवल उन सभी लाइनों को मुद्रित करेगा ।
टेराडॉन

जैसा कि टेर्डन ने कहा।
कोस

1
हाँ। लाइन की शुरुआत में मैच शुरू करने के लिए '^' वर्ण याद किया। उसके लिए खेद है।
थ्रेडलर

1
अब यह बेहतर है =) +1
एबी
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.