Используйте sed для анализа определенных значений из строки, разделенной пробелом
У меня есть файл с такими строками:
0 6 973 1346 2318 456 431 93 58 1 1 0 0 0 0
Я хочу извлечь 1-е, 4-е и 5-е число и сохранить их в переменных в bash для дальнейшего использования. В приведенном выше примере я хочу получить значения "0", "1346" и "2318".
Я думаю использовать sed, но я не знаю как. Любые другие способы также приветствуются.
пс. Спасибо за ответ, вот что я использую сейчас:
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
Это работает, да ~~
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
while read -r fn
while read -r first second third fourth fifth remainder
do
echo "$first"
echo "$fourth"
echo "$fifth"
done < "$fn"
done < filelist
Если я могу предложить предложение, вы можете упростить свой сценарий следующим образом:
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