У меня есть текстовый файл, в которых тысячах данных там. например.
id=row_value
profile=row_value
name=row_value
email=row_value
address=row_value
id=row_value2
profile=row_value2
name=row_value2
email=row_value2
address=row_value2
. . .
. . .
. . .
Я хочу Извлечь все name
и email
из того файла. например.
name=row_value
email=row_value
name=row_value2
email=row_value2
. . .
. . .
. . .
ПРИМЕЧАНИЕ: Отметьте новую строку после каждого name
и email
пары..
Я Знаю, что это будет сделано в некоторых командах Linux как grep
, sed
, awk
и т.д. Я - Новичок в командах Linux и помогите мне относительно этого..
Попробуйте это
grep "name\|email" <Path to your File>
Для содержания совести в чистоте вот awk
версия:
$ awk '$0~/name/||/email/ {if ($0~/email/) $3="\n"; print $0}' testerfile.txt
name=row_value
email=row_value
name=row_value2
email=row_value2
И этот, добавит точки:
awk '$0~/name/||/email/ {if ($0~/email/) $3="\n"; print $0}; $0~/^.[[:blank:]].[[:blank:]]./ {print} ' testerfile.txt
Вывод:
$awk '$0~/name/||/email/ {if ($0~/email/) $3="\n"; print $0}; $0~/^.[[:blank:]].[[:blank:]]./ {print} ' testerfile.txt
name=row_value
email=row_value
name=row_value2
email=row_value2
. . .
. . .
. . .
Намного более простая версия первой версии:
awk '/^name/; /^email/ {$3="\n"; print}' testerfile.txt
Привязанный regex предотвратит для нахождения слов "имя" и "электронную почту" в другом месте в тексте, и только в начале строки