Используйте sed для парсинга определенных значений из разделенной пробелом строки

У меня есть файл со строками как:

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

Я хочу извлечь 1-е, 4-е и 5-е число и сохранить их в переменных в ударе для дальнейшего использования. В примере выше значений я хочу, '0', '1346' и '2318'.

Я думаю для использования sed, но я не знаю как. Любые другие пути также приветствуются.

PS. Спасибо за ответ следующее - то, что я использую теперь:

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

Это работает, да ~~

0
задан 09.03.2011, 19:15

3 ответа

кошка myFile.txt | сценарий ниже:

#!/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
1
ответ дан 24.11.2019, 06:43
while read -r fn
    while read -r first second third fourth fifth remainder
    do
        echo "$first"
        echo "$fourth"
        echo "$fifth"
    done < "$fn"
done < filelist
1
ответ дан 24.11.2019, 06:43

Если я могу предложить предложение, можно упростить сценарий как это:

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
0
ответ дан 24.11.2019, 06:43

Теги

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