Looping através de um arquivo usando uma coluna

3

Eu estou tentando fazer um loop através de um arquivo chamado file.txt que contém um monte de lixo e uma coluna (coluna # 4) que eu estou interessado. Eu quero que este loop seja executado de 0 a eof. Para cada valor na coluna 4, quero chamar outro script.

    
por ilikecake 12.11.2015 / 17:41

5 respostas

3

Para chamar um script para cada valor na coluna # 4, você pode usar algo assim:

awk '{system("./your_script.sh " $4)}' inputfile
    
por 12.11.2015 / 18:11
1

Ainda outra versão como poderia ser feito, desta vez apenas com builtins de shell:

while read line ; do
    set $line
    echo $4
done <filename

Substitua echo pelo seu script.

    
por 12.11.2015 / 18:38
1

Estou assumindo que suas colunas estão separadas por espaço em branco.

for value in $(cat file.txt | tr -s ' ' | cut -d ' ' -f4); do
  ./my_script.sh $value
done

Explicação:

  • tr -s ' ' squelches espaços consecutivos para que as colunas sejam separadas por espaço único
  • cut -d ' ' -f4 usa espaço único como delimitador para escolher a quarta coluna
por 12.11.2015 / 18:17
1

Surpreende-me que ninguém tenha mencionado xargs , porque esse é precisamente o propósito de xargs fornecer valores gerados pelo comando anterior para outra coisa. Podemos combinar essa propriedade com a capacidade de awk de imprimir colunas. Abaixo está uma amostra de demonstração. Você pode substituir printf "Hello %s\n" part por seu script

xieerqi@eagle:~$ df > testFile.txt
xieerqi@eagle:~$ awk '{print $4}' testFile.txt | xargs -I {} printf "Hello %s\n" {}
Hello Available
Hello 26269816
Hello 4
Hello 2914488
Hello 584064
Hello 5120
Hello 2827976
Hello 102324
    
por 15.11.2015 / 00:22
-2
sed 1d $outfile1 | while read "column on file" do

done
    
por 12.11.2015 / 21:51