Aşağıdaki içeriğe sahip bir dosya var:
(((jfojfojeojfow
//
hellow_rld
(((jfojfojeojfow
//
hellow_rld
Parantez ile başlayan her satırı nasıl ayıklayabilirim?
Aşağıdaki içeriğe sahip bir dosya var:
(((jfojfojeojfow
//
hellow_rld
(((jfojfojeojfow
//
hellow_rld
Parantez ile başlayan her satırı nasıl ayıklayabilirim?
Yanıtlar:
İşte bash
bir astar:
while IFS= read -r line; do [[ $line =~ ^\( ]] && echo "$line"; done <file.txt
Burada her bir girdi satırını okuyoruz ve eğer çizgi ile başlıyorsa (
, çizgi yazdırılır. Ana test tarafından yapılır [[ $i =~ ^\( ]]
.
Kullanma python
:
#!/usr/bin/env python2
with open('file.txt') as f:
for line in f:
if line.startswith('('):
print line.rstrip()
Burada line.startswith('(')
, çizginin başlayıp başlamadığını kontrol eder (
, eğer öyleyse çizgi yazdırılır.
awk '/^\(/' testfile.txt
Sonuç
$ awk '/^\(/' testfile.txt
(((jfojfojeojfow
(((jfojfojeojfow
Python tek astar olarak:
$ python -c 'import sys;print "\n".join([x.strip() for x in sys.stdin.readlines() if x.startswith("(")])' < input.txt
(((jfojfojeojfow
(((jfojfojeojfow
Veya alternatif olarak:
$ python -c 'import sys,re;[sys.stdout.write(x) for x in open(sys.argv[1]) if re.search("^\(",x)]' input.txt
look
Gönderen AT & T Unix 7. versiyonda yolu geri göründü klasik ama az bilinen Unix programları, biridir man look
:
Look Utility, dosyada önek olarak dize içeren tüm satırları görüntüler
Sonuç:
$ look "(" input.txt
(((jfojfojeojfow
(((jfojfojeojfow
Tersini yapabilirsiniz.
grep -v '^[^(]' file
veya
sed '/^[^(]/d' file
Bunun için grep komutunu kullanın. Söz konusu içeriğe sahip dosyanın varsayımına t.txt adı verilir:
user:~$ grep '^(' t.txt
(((jfojfojeojfow
(((jfojfojeojfow
Daha fazla argüman olarak '--color' ile terminalde neyin eşleştiğini renkli olarak görebilirsiniz. Bu talimat boş satırlarla da eşleşmiyor.
(
yalnızca bir ile başlayanları değil, a içeren tüm satırları yazdırır .