Hola amigos,
Sólo muy recientemente he comenzado a aprender
sed mando ... me pareció que un
sed es más rápido en la búsqueda de los patrones que algunos de mis scripts que utiliza para comprobar la grep Patten, dentro de un archivo línea por línea utilizando el método de búsqueda que es mucho tiempo.
Por debajo de la secuencia de comandos "strMatch" es uno de ellos que utilizo para buscar un patrón. Una vez que el patrón se encuentra se mostrará el modelo y el número de línea o el número de línea por sí sola como se indica a continuación.
> Entrada
strMatch Sample.cpp "PLAN STRING"
> Producto
5: PLAN DE CUERDA
> Entrada
strMatch Sample.cpp "PLAN STRING" 2
> Producto
5
Muchos de mis otros script ha comenzado a usar este script y la dependencia de este script tiene casi se convirtió en complejos de manera que los nuevos scripts que utiliza strMatch, directa o indirectamente, para fines diversos en la ejecución es lenta. He observado que las siguientes
sed comando puede ser usado para ajustar strMatch para aumentar la velocidad de búsqueda ...
sed '/ PLAN DE CUERDA / p' Sample.cpp
Pero necesito para obtener el número de línea, como también mi anterior strMatch .... ¿Hay alguna forma de imprimir la salida como a continuación
Producto 1 [número de línea y patrón]
5 PLAN DE CUERDA
Producto 2 [número de línea donde se encontró patrón]
5
Debido a que algunos de mis guiones sólo utiliza estos números de línea ..... La amabilidad de ayudar en la toma de secuencia de comandos rápida strMatch .... el fin de strMatch es buscar un patrón y restablecer el patrón o el patrón de localización, junto con la ubicación real ..... A continuación se strMatch script ...
hay un caso especial para el manejo de "incluir" palabras clave ..... yo no soy capaz de encontrar alguna alternativa para "ejecutar" para pasar el contenido de un archivo a una variable como tal (con la alineación correcta y )..... i alguna vez incluyen la búsqueda de palabra clave es ... exec sobre todos los archivos de la carpeta ....... creo que con
sed i comando no será exigir "exec",
Gracias de antemano ...........


-------------------------------------------------- -----------------------
filtro () (
patrón \u003d $ 1
línea \u003d $ 2
for x in $ linea; hacer
bandera \u003d `echo $ x | grep-c $ patrón»
if [$-eq pabellón 1] y, a continuación,
return $ pabellón
algo más
return 0
fi
hecho
)
# filterKeywords () (
#)
patrón \u003d $ 2
exec <$ 1
# fileCont \u003d `rdfil $ 1»
linCnt \u003d 1
exitCnt \u003d `lincnt $ 1»
cnt \u003d 0
count \u003d 0
modo \u003d $ 3
# rdfil $ 1
mientras que leer línea; hacer
if [ "$ 2" \u003d\u003d "incluir"] y, a continuación,
quitCon \u003d `echo $ linea | grep-c "//-------------------------"`
if [$ quitCon-eq 1] y, a continuación,
contar \u003d$(($ contar + 1))
if [$ count-eq 2] y, a continuación,
romper
fi
fi
fi
estado \u003d `echo $ linea | grep-c" $ 2 "»
if [$ estado-eq 1] y, a continuación,
fflag \u003d `$ filtro patron $ línea»
wcnt \u003d `echo $ fflag | wc-l»
if [$ wcnt \u003d\u003d 1] y, a continuación,
if [$ $ exitCnt ge-CNT] y, a continuación,
if [ "$ modo"! \u003d "2"]; a continuación,
$ modo en caso
"NUM") # NÚMERO DE LÍNEA
echo $ linCnt
;;
"FON") # PRIMERA LÍNEA NÚMERO DE OCURRENCIA
echo $ linCnt
salida
;;
"FOLN") # PRIMERA LÍNEA DE SUCESOS
echo $ linea
salida
;;
"LN") sólo las líneas #
echo $ linea
;;
*) # PREDETERMINADO
echo $ linCnt: $ linea
;;
esac
# echo "Hola"
algo más
echo $ linCnt
fi
# $ filterKeywords línea
fi
fi
fi
linCnt \u003d$(($ linCnt + 1))
cnt \u003d$(($ cnt + 1))
# echo $ "---------------------------------------$ cnt exitCnt "
hecho
# echo "Adiós!"