मेरे पास निम्नलिखित सामग्री के साथ एक फाइल है:
(((jfojfojeojfow
//
hellow_rld
(((jfojfojeojfow
//
hellow_rld
मैं कोष्ठक के साथ शुरू होने वाली प्रत्येक पंक्ति को कैसे निकाल सकता हूं?
मेरे पास निम्नलिखित सामग्री के साथ एक फाइल है:
(((jfojfojeojfow
//
hellow_rld
(((jfojfojeojfow
//
hellow_rld
मैं कोष्ठक के साथ शुरू होने वाली प्रत्येक पंक्ति को कैसे निकाल सकता हूं?
जवाबों:
यहाँ 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क्लासिक लेकिन बहुत कम जाना जाता यूनिक्स उपयोगिताओं, जो एटी एंड टी यूनिक्स संस्करण 7. से में जिस तरह से वापस दिखाई दिया में से एक है man look:
लुक यूटिलिटी किसी भी लाइन को फाइल में प्रदर्शित करती है जिसमें उपसर्ग के रूप में स्ट्रिंग होती है
परिणाम:
$ look "(" input.txt
(((jfojfojeojfow
(((jfojfojeojfow
आप उलटा कर सकते हैं।
grep -v '^[^(]' file
या
sed '/^[^(]/d' file
इसके लिए grep कमांड का उपयोग करें। उल्लिखित सामग्री के साथ फाइल मान लेना t.txt कहलाता है:
user:~$ grep '^(' t.txt
(((jfojfojeojfow
(((jfojfojeojfow
आगे के तर्क के रूप में '- रंग' के साथ आप टर्मिनल में रंग में भी देख सकते हैं कि क्या मेल खाता है। यह निर्देश भी खाली लाइनों से मेल नहीं खाता है।
(साथ शुरू होने वाले न केवल उन सभी लाइनों को मुद्रित करेगा ।