que tengo un archivo con registros que son de la forma:búsqueda awk en múltiples campos de un archivo de registro de múltiples líneas
SMS-MT-FSM-DEL-REP
country: IN
1280363645.979354_PFS_1_1887728354
SMS-MT-FSM-DEL-REP
country: IN
1280363645.729309_PFS_1_1084296392
SMS-MO-FSM
country: IR
1280105721.484103_PFM_1_1187616097
SMS-MO-FSM
country: MO
1280105721.461090_PFM_1_882824215
Esto se presta a analizar a través de awk usando algo como: awk 'BEGIN {FS = "\ n"; RS = ""} /country:.*MO/ {print $ 0} '
Mi pregunta es ¿cómo uso awk para buscar los registros en 2 campos separados? Por ejemplo, solo quiero imprimir registros que tengan un país de MO Y ¿quién registra la primera línea es SMS-MO-FSM?
Tenga cuidado con las coincidencias de expresiones regulares no deseadas (como 'country: SMO'). Usaría una comparación de cadenas siempre que sea posible y anclaré todas las expresiones regulares. – schot
gracias, pero me pregunto si podría responder (probablemente muy simple) a la última pregunta. Me gustaría imprimir el resultado en una línea (para canalizar en sort | uniq)> Ejecuté su código y funcionó muy bien (gracias) pero cuando configuré OFS en "" (espacio) los campos del registro aún salieron en diferentes líneas. ¿Qué estoy haciendo mal? Aquí está mi código: awk 'BEGIN {FS = "\ n"; RS = ""; OFS = "";} $ 2 ~/país: MO $/&& $ 1 ~/SMS-MO-FSM/{print $ 0} 'testFile.txt – adaptive
cuando se hace la tubería para ordenar, necesita nuevas líneas ... no sé cómo responda su pregunta ya que no proporciona suficiente información sobre sus datos. intente configurar OFS = "\ n" y vea. – ghostdog74