Saya punya file dengan konten berikut:
(((jfojfojeojfow
//
hellow_rld
(((jfojfojeojfow
//
hellow_rld
Bagaimana saya bisa mengekstrak setiap baris yang dimulai dengan tanda kurung?
Saya punya file dengan konten berikut:
(((jfojfojeojfow
//
hellow_rld
(((jfojfojeojfow
//
hellow_rld
Bagaimana saya bisa mengekstrak setiap baris yang dimulai dengan tanda kurung?
Jawaban:
Ini bash
satu liner:
while IFS= read -r line; do [[ $line =~ ^\( ]] && echo "$line"; done <file.txt
Di sini kita membaca setiap baris input dan jika baris dimulai dengan (
, garis dicetak. Tes utama dilakukan oleh [[ $i =~ ^\( ]]
.
Menggunakan python
:
#!/usr/bin/env python2
with open('file.txt') as f:
for line in f:
if line.startswith('('):
print line.rstrip()
Di sini line.startswith('(')
memeriksa apakah garis dimulai dengan (
, jika demikian maka garis dicetak.
awk '/^\(/' testfile.txt
Hasil
$ awk '/^\(/' testfile.txt
(((jfojfojeojfow
(((jfojfojeojfow
Sebagai python one-liner:
$ python -c 'import sys;print "\n".join([x.strip() for x in sys.stdin.readlines() if x.startswith("(")])' < input.txt
(((jfojfojeojfow
(((jfojfojeojfow
Atau sebagai alternatif:
$ python -c 'import sys,re;[sys.stdout.write(x) for x in open(sys.argv[1]) if re.search("^\(",x)]' input.txt
look
adalah salah satu utilitas Unix klasik tetapi sedikit diketahui, yang muncul jauh di AT&T Unix versi 7. Dari man look
:
Utilitas tampilan menampilkan setiap baris dalam file yang berisi string sebagai awalan
Hasil:
$ look "(" input.txt
(((jfojfojeojfow
(((jfojfojeojfow
Anda dapat melakukan kebalikannya.
grep -v '^[^(]' file
atau
sed '/^[^(]/d' file
Gunakan perintah grep untuk ini. Dengan asumsi file dengan konten yang disebutkan disebut t.txt:
user:~$ grep '^(' t.txt
(((jfojfojeojfow
(((jfojfojeojfow
Dengan '--color' sebagai argumen lebih lanjut Anda bahkan dapat melihat dalam warna di terminal apa yang cocok. Instruksi ini juga tidak cocok dengan baris kosong.
(
, tidak hanya yang dimulai dengan satu.