Tengo un archivo con los siguientes contenidos:
(((jfojfojeojfow
//
hellow_rld
(((jfojfojeojfow
//
hellow_rld
¿Cómo puedo extraer cada línea que comienza con un paréntesis?
Tengo un archivo con los siguientes contenidos:
(((jfojfojeojfow
//
hellow_rld
(((jfojfojeojfow
//
hellow_rld
¿Cómo puedo extraer cada línea que comienza con un paréntesis?
Respuestas:
Aquí hay un bash
trazador de líneas:
while IFS= read -r line; do [[ $line =~ ^\( ]] && echo "$line"; done <file.txt
Aquí estamos leyendo cada línea de entrada y si la línea comienza con (
, la línea se imprime. La prueba principal se realiza por [[ $i =~ ^\( ]]
.
Utilizando python
:
#!/usr/bin/env python2
with open('file.txt') as f:
for line in f:
if line.startswith('('):
print line.rstrip()
Aquí line.startswith('(')
verifica si la línea comienza con (
, si es así, la línea se imprime.
awk '/^\(/' testfile.txt
Resultado
$ awk '/^\(/' testfile.txt
(((jfojfojeojfow
(((jfojfojeojfow
Como 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
O alternativamente:
$ python -c 'import sys,re;[sys.stdout.write(x) for x in open(sys.argv[1]) if re.search("^\(",x)]' input.txt
look
es una de las utilidades clásicas pero poco conocidos Unix, que aparecieron hacia atrás en forma de AT & T UNIX versión 7. A partir de man look
:
La utilidad de búsqueda muestra las líneas del archivo que contienen cadenas como prefijo
El resultado:
$ look "(" input.txt
(((jfojfojeojfow
(((jfojfojeojfow
Puedes hacer lo contrario.
grep -v '^[^(]' file
o
sed '/^[^(]/d' file
Use el comando grep para esto. Suponiendo que el archivo con el contenido mencionado se llama t.txt:
user:~$ grep '^(' t.txt
(((jfojfojeojfow
(((jfojfojeojfow
Con '--color' como argumento adicional, incluso puede ver en color en el terminal lo que coincide. Esta instrucción tampoco coincide con líneas vacías.
(
, no solo las que comienzan con una.