Use sed para analisar valores específicos de uma string separada por espaço

0

Eu tenho um arquivo com linhas como:

0 6 973 1346 2318 456 431 93 58 1 1 0 0 0 0

Eu quero extrair o primeiro, quarto e quinto número e salvá-los em variáveis no bash para uso posterior. No exemplo acima, os valores desejados são '0', '1346' e '2318'.

Estou pensando em usar sed, mas não sei como. Quaisquer outras formas também são bem vindas.

ps. Obrigado pela resposta, segue o que estou usando agora:

for fn in $(cat filelist); do
  more $fn | \                                                                                                                                                                         
      while read str; do
          echo $str
          var=$(echo $str | awk -F" " '{print $1,$2,$3,$4,$5}')
          set -- $var
          echo $1
          echo $4
          echo $5
  done
done

Funciona, sim ~~

    
por zhanwu 09.03.2011 / 17:24

3 respostas

1

cat myFile.txt | o script abaixo:

#!/bin/bash
while read lineOfText
do
    echo $lineOfText | any of the approaches from http://www.unix.com/shell-programming-scripting/38450-split-string-using-separetor.html
done
    
por 09.03.2011 / 17:28
1
while read -r fn
    while read -r first second third fourth fifth remainder
    do
        echo "$first"
        echo "$fourth"
        echo "$fifth"
    done < "$fn"
done < filelist
    
por 09.03.2011 / 19:50
0

Se eu puder oferecer uma sugestão, você pode simplificar seu script assim:

for fn in $(< filelist); do  #Replacement for $(cat filelist)
  while read str; do
    echo $str
    # No need for set --, unless you *really* want the values to be
    # placed in $1, $4, and $5
    read var1 var4 var5 <<< "$( echo $str | awk '{print $1,$4,$5}' )"
    echo $var1
    echo $var4
    echo $var5
  done < $fn  # Replaces more $fn |
done
    
por 10.03.2011 / 10:07

Tags