Esto es muy común en la secuencia de comandos:

#!/bin/bash

teststr="col1 col2"

var1=`echo ${teststr} | awk '{print $1}'`
var2=`echo ${teststr} | awk '{print $2}'`

echo var1=${var1}
echo var2=${var2}

Sin embargo no me gusta esto, especialmente cuando hay más campos a analizar.
Supongo que debe haber una mejor manera, como:

(var1,var2)=`echo ${teststr} | awk ‘{print $1 $2}’
(en mi imaginación)

¿Es así?
Gracias por ayudar a mejorar la eficiencia y ahorrar algo de energía de la CPU.

InformationsquelleAutor X.M. | 2012-03-02

2 Comentarios

  1. 7

    Esto podría funcionar para usted:

    var=(col0 col1 col2)
    echo "${var[1]}"
    col1
    • Gracias a recordarme para bash arries. Esta es la solución. También se puede escribir así: var=(echo ${blabla} | awk -F"_" '{print $1 " " $3}')…
  2. 0

    Bash tiene la Matriz de Apoyo, sólo Tenemos que proporcionan los valores de forma dinámica 🙂

    function test_set_array_from_awk(){
    
        # Note : -a is required as declaring array
        let -a myArr;
    
        # Hard Coded Valeus 
        # myArr=( "Foo" "Bar" "other" );
        # echo "${myArr[1]}" # Print Bar 
    
        # Dynamic values 
        myArr=( $(echo "" | awk '{print "Foo"; print "Bar"; print "Fooo-And-Bar"; }') );
    
        # Value @index 0 
        echo "${myArr[0]}" # Print Foo
    
        # Value @index 1
        echo "${myArr[1]}" # Print Bar 
    
        # Array Length 
        echo ${#myArr[@]}  # Print 3 as array length 
    
        # Safe Reading with Default value 
        echo "${myArr[10]-"Some-Default-Value"}" # Print Some-Default-Value
        echo "${myArr[10]-0}"    # Print 0  
        echo "${myArr[10]-''}"   # Print ''
        echo "${myArr[10]- }"     # Print nothing
    
        # With Dynamic Index 
        local n=2
        echo "${myArr["${n}"]- }" # Print Fooo-And-Bar
    
    }
    
    # calling test function
    test_set_array_from_awk

    Bash Documentación De La Matriz : http://tldp.org/LDP/abs/html/arrays.html

Dejar respuesta

Please enter your comment!
Please enter your name here