Имеется стандартный ввод:vasya
pupkin
123Нужно вылавливать число 123, а в вывод отправлять только имя Вася(что на 2 строчки выше).
Как это можно сделать на лету шеллом?
>Имеется стандартный ввод:
>
>vasya
>pupkin
>123
>
>Нужно вылавливать число 123, а в вывод отправлять только имя Вася(что на
>2 строчки выше).
>
>Как это можно сделать на лету шеллом?#!/bin/bash
counter=1
flag=0
while [ "t" == "t" ] ;do
echo -n "Enter something: "
read z
if [ $flag -eq 1 ]; then
flag=0
fi
if [ "$z" == "123" ]; then
echo $first
flag=1
fi
if [ $flag -ne 1 ];then
cond=$(echo "$counter % 2" | bc)
case "$cond" in
1) first=$z;;
0) second=$z;;
esac
let counter=counter+1
fidone
[...]
>Как это можно сделать на лету шеллом?Много как, вариантов -- масса.
Вот, так, например, можно:
[c0der@rock ~]$ echo "vasya\npupkin\n123\nslava\nsemushin\n321\nivan\nivanov\n123" vasya
pupkin
123
slava
semushin
321
ivan
ivanov
123
[c0der@rock ~]$ echo "vasya\npupkin\n123\nslava\nsemushin\n321\nivan\nivanov\n123" | paste - - - | awk '{if($3=="123"){print $1}}'
vasya
ivan
[c0der@rock ~]$
$ cat test
vasya
pupkin
123
$cat test | grep -B3 123 | head -1
vasya