Формат выходного файла из команды вставки

Para obtener todos los valores Cato Dogdel nodo nameen un documento XML como el suyo, puede usar xmlstarletasí:

xmlstarlet sel -t -v '//object/name[text() = "Cat" or text() = "Dog"]' file.xml

Esto generaría las palabras Caty Dogcomo salida si existen en el documento como los valores de un nodo objectnodo namesecundario -. Esta operación sería difícil de hacer bien con grepen caso de que haya otros nodos nameque no sean nodos -secundarios a nodos object, o si algunos nodos nametienen atributos, etc.

Desafortunadamente, xmlstarletno sale con un estado de salida no -cero si no puede encontrar nada en el archivo de entrada XML, por lo que debemos agregar un grepal final de esto para verificar si obtuvimos algún resultado (esto se usará en el siguiente paso):

xmlstarlet sel -t -v '//object/name[text() = "Cat" or text() = "Dog"]' file.xml | grep '.'

Sin embargo, podemos ejecutar esto en todos los archivos de 10kfind:

find. -type f -name '*.xml' -exec sh -c '
    xmlstarlet sel -t -v "//object/name[text() = \"Cat\" or text() = \"Dog\"]" "$1" |
    grep -q "."' sh {} ';' -print

Esto primero encontraría todos los archivos regulares en o debajo del directorio actual cuyos nombres terminan con .xml. Para cada uno de estos archivos, xmlstarletse ejecuta para extraer las cadenas Caty Dogde los nodos XML correctos, y grepse usa para verificar si xmlstarletencontró algo. Ejecutar grepcon su opción -qhace que la utilidad se silencie, pero saldrá con el estado de salida apropiado dependiendo de si coincidió con algo o no.

Si grepencontró algo, findimprime la ruta del archivo que contenía los datos.

2
27.06.2019, 16:29
2 ответа

С любым awk в любой оболочке на каждой машине UNIX для любого количества входных файлов,все, что вам нужно, это:

$ paste FileA FileB | awk '{o=$1; for (i=2; i<NF; i+=3) o=o"\t"$i; print o}'
A:      18.49   21.29
C:      14.49   38.71
B:      18.89   36.13
4
27.01.2020, 21:51
join fileA fileB |awk '{ print $1"\t"$2"\t"$3 }'. 

Убедитесь, что оба файла отсортированы по одному и тому же столбцу.

1
27.01.2020, 21:51

Теги

Похожие вопросы