И это всё МОЁ
что делает на скорую руку написанная фигня на Bash'е:
(вывод ТОЛЬКО совпадающих по ЗАДАННОМУ полю строк)
Файл (добавлена нумерация для наглядности):
1 hello, y-cat!
2 cat drank vodka
3 mom washed frame
4 dad drank vodka
5 123 456 789
6 Vova drowned
7 vova fool
8 cat drank vodka
9 mom at work
10 cat whore juvenile
11 hello, www!
12 petya the Fool
13 dad washed frame
14 Cat washed frame
15 cat vodka drank
16 cat drowned
17 cat the Fool
18 hello www!
Код:
#!/usr/bin/env bash
mapfile -O 1 a < <(cat "file" | nl | sort -k 2d)
i=0
f=0
for str in "${a[@]}"; do
(( i++))
mapfile fr < <(printf %s "${a[i]}" | awk '{print $2"\n"$0}')
(( k=i+1 ))
mapfile sr < <(printf %s "${a[k]}" | awk '{print $2"\n"$0}')
if [[ "${fr[0]}" == "${sr[0]}" ]]; then
if (( f == 0 )); then
f=1
printf %s "${fr[1]}"
printf %s "${sr[1]}"
else
printf %s "${sr[1]}"
fi
else
f=0
fi
done
Выхлоп:
2 cat drank vodka
8 cat drank vodka
16 cat drowned
17 cat the Fool
15 cat vodka drank
10 cat whore juvenile
4 dad drank vodka
13 dad washed frame
9 mom at work
3 mom washed frame
Дальше
awk 'BEGIN {i = 1} {ff = $1; f_l = $0; getline ; sf = $1; s_l = $0} {if (ff == sf) a[i] = f_l; a[i+1] = s_l; i = i +2 } END { (for i in a) print a[i]} ' file
не продвинулся, я уже писал, что опыта с AWK у меня с гулькин х...
Грамотные, подскажите КАК?