У меня есть файл со строками как:
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
Это работает, да ~~
кошка 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