Поскольку вы установили Debian 8.1, ваши источники пакетов должны ссылаться на jessie
, а не на squeeze
. Вам следует отредактировать /etc/apt/sources.list
(и файлы в /etc/apt/sources.list.d/
, ссылающиеся на squeeze
) и заменить squeeze
на jessie
.
После этого
apt-get update
apt-get -f install
apt-get install build-essential
следует восстановить g++
(build-essential
зависит от g++
и make
).
Используйте для этого GNU grep
:
$ grep -o -P '(?<=\bxyz=)[^,]+,' abc.txt
grep
выводит строки, соответствующие заданному регулярному выражению. С помощью -o
мы определяем печать только совпадающей части строки. С -P
наше регулярное выражение интерпретируется как регулярное выражение perl, что дает нам больше возможностей.
Наше регулярное выражение говорит:
,
([^,]+
)и заканчивается на,
xyz=
(?<=\bxyz=)
это называется положительным просмотром назад). С помощью \b
мы удостоверяемся, что grep не похож наbooxyz=
Используя стандарт awk
и предполагая, что вы хотите искать xyz=
, а именно во втором поле, разделенном запятой -.
$ awk -F ',' '{ split($2,a,"="); if (a[1] == " xyz") print a[2] }' file
a432j42jjk4
jkl234j54nn
2395hdshkw4
abc424729hh
70700ghgh99
Как вариант,
$ awk -F ',' '{ split($2,a,"=") } a[1] == " xyz" { print a[2] }' file
a432j42jjk4
jkl234j54nn
2395hdshkw4
abc424729hh
70700ghgh99
Это будет обрабатывать ввод как состоящий из строк с полями, разделенными запятыми -. Фактическое тело кода awk
разделит второе поле с разделителями-запятыми -на подполя в =
, а затем напечатает второе из них, если первое представляет собой точно строку xyz
(, включая начальный пробел перед запятая ).
Пустые строки будут отбрасываться, так как a[1]
не получит нужное значение в этих строках.
Если вам нужны дополнительные запятые в конце каждой строки вывода, используйте print a[2] ","
.