![]() |
|
|
google unix.com
|
|||||||
| Foros | Registro | Reglas de los Foros | Enlaces | Álbumes | Preguntas más frecuentes | Lista de miembros | Calendario | Búsqueda | Puestos de hoy | Marcar Foros Como Leídos |
| UNIX for Dummies Preguntas y Respuestas Si no está seguro de que para publicar un UNIX o Linux cuestión, puesto que aquí. Todos los novatos en Linux, UNIX y bienvenida! |
Más UNIX y Linux Foro Temas usted puede encontrar útiles
|
||||
| Hilo | Hilo para principiantes | Foro | Respuestas | Último mensaje |
| "|" Separados archivo validaciones | kolesunil | Programación de scripts de shell y | 1 | 05-27-2008 06:19 AM |
| Líneas separadas en un único '|' separados línea | hidnana | Programación de scripts de shell y | 3 | 03-17-2008 10:16 AM |
| Perticular sustituir a un personaje de todas las líneas de un archivo | abovais | Programación de scripts de shell y | 1 | 12-11-2007 05:35 AM |
| dos líneas en una línea separada de colon ... | tonlu | Programación de scripts de shell y | 2 | 03-30-2005 11:27 AM |
| validación de caracteres | ruffenator | Programación de Alto Nivel | 9 | 05-02-2002 03:13 PM |
![]() |
|
|
Linkback vínculo | Herramientas de hilo | Buscar en este Hilo | Tasa de Hilo | Modos de visualización |
|
|
|
||||
|
Validación de las líneas de caracteres separados en un archivo
Hola, Tengo un archivo con "|" campos separados. Si la línea no contiene n "|" (por ejemplo 2) y, a continuación, poner esta línea en un archivo llamado invalid_file.txt. Si lo hace poner esta línea en un archivo llamado valid_file.txt. Para, por ejemplo, un archivo contiene las líneas siguientes: Código:
Hi|Hello How|Are|You Hello entonces invalid_file.txt debe contener: Código:
How|Are|You Hello valid_file.txt debe contener: Código:
Hi|Hello Cualquier ayuda es muy apreciada. Gracias, SK Última edición por Yogesh Sawant; al 05-27-2008 08:08 AM.. Motivo: añadido etiquetas de código |
|
||||
|
He preparado el script de shell. Gracias. Por favor consulte el script de shell: Código:
TestValid()
{
while read -r line
do
echo ${line} | awk -F"|" '{
if (NF == sep_num)
printf("%s\n", $0) >> fname"_valid_rec";
else
printf("%s\n", $0) >> fname"_invalid_rec"
}' sep_num="${2}" fname="${1}"
done < ${1}
}
while read -r col1 col2
do
if [ -f ${col1}"_valid_rec" ]; then
rm ${col1}"_valid_rec"
fi
if [ -f ${col1}"_invalid_rec" ]; then
rm ${col1}"_invalid_rec"
fi
TestValid ${col1} ${col2}
if [ -f ${col1}"_invalid_rec" ]; then
mv ${col1} ${col1}"_org"
fi
if [ -f ${col1}"_valid_rec" ]; then
mv ${col1}"_valid_rec" ${col1}
fi
done < para_new.cfg
Última edición por Yogesh Sawant; al 05-27-2008 08:09 AM.. Motivo: añadido etiquetas de código |
|
||||
|
Con awk puede hacer esto con un oneliner: Código:
awk 'BEGIN{FS=OFS="|"}NF==2{print $0 > "valid_file.txt";next}{print $0 > "invalid_file.txt"}' file
Uso o nawk / usr/xpg4/bin/awk en Solaris si obtiene errores. |
|
||||
|
Se podría haber utilizado awk: Código:
awk -F "|" 'NF!=2' file > output |
![]() |
| Marcadores |
| Herramientas de hilo | Buscar en este Hilo |
| Modos de visualización | Vota a este hilo |
|
|