Ich habe eine Datei mit folgendem Inhalt:
(((jfojfojeojfow
//
hellow_rld
(((jfojfojeojfow
//
hellow_rld
Wie kann ich jede Zeile extrahieren, die mit einer Klammer beginnt?
Ich habe eine Datei mit folgendem Inhalt:
(((jfojfojeojfow
//
hellow_rld
(((jfojfojeojfow
//
hellow_rld
Wie kann ich jede Zeile extrahieren, die mit einer Klammer beginnt?
Antworten:
Hier ist ein bash
Einzeiler:
while IFS= read -r line; do [[ $line =~ ^\( ]] && echo "$line"; done <file.txt
Hier lesen wir jede Eingabezeile und wenn die Zeile mit beginnt (
, wird die Zeile gedruckt. Der Haupttest wird von durchgeführt [[ $i =~ ^\( ]]
.
Verwenden von python
:
#!/usr/bin/env python2
with open('file.txt') as f:
for line in f:
if line.startswith('('):
print line.rstrip()
Hier wird line.startswith('(')
geprüft, ob die Zeile mit beginnt (
. Wenn ja, wird die Zeile gedruckt.
awk '/^\(/' testfile.txt
Ergebnis
$ awk '/^\(/' testfile.txt
(((jfojfojeojfow
(((jfojfojeojfow
Als Python-Einzeiler:
$ python -c 'import sys;print "\n".join([x.strip() for x in sys.stdin.readlines() if x.startswith("(")])' < input.txt
(((jfojfojeojfow
(((jfojfojeojfow
Oder alternativ:
$ python -c 'import sys,re;[sys.stdout.write(x) for x in open(sys.argv[1]) if re.search("^\(",x)]' input.txt
look
ist eines der klassischen , aber wenig Unix - Werkzeuge bekannt, die 7. Vom Weg zurück in AT & T Unix - Version erschienen man look
:
Das Dienstprogramm look zeigt alle Zeilen in der Datei an, die Zeichenfolgen als Präfix enthalten
Das Ergebnis:
$ look "(" input.txt
(((jfojfojeojfow
(((jfojfojeojfow
Sie können das Gegenteil tun.
grep -v '^[^(]' file
oder
sed '/^[^(]/d' file
Verwenden Sie dazu den Befehl grep. Angenommen, die Datei mit dem genannten Inhalt heißt t.txt:
user:~$ grep '^(' t.txt
(((jfojfojeojfow
(((jfojfojeojfow
Mit '--color' als weiteres Argument können Sie sogar in Farbe im Terminal sehen, was passt. Diese Anweisung stimmt auch nicht mit Leerzeilen überein.
(
, nicht nur die, die mit einem beginnen.