Как получить только выбранные строки из отформатированного файла ключ = значение? - PullRequest
0 голосов
/ 25 января 2020

Мне нравится экспортировать только NAME и YEAR из файла ab.txt, показанного ниже. Решение работает, но должен быть способ обойтись без создания второго файла b.txt? Обратите внимание, что в value.

$ cat /tmp/ab.txt
TYPE=Sedan
NAME=VolksWagen golf
YEAR=2014
CITY=NY
OWNERS=3
CONDITION=Fair
$ grep "NAME=\|YEAR=" /tmp/ab.txt > /tmp/b.txt
$ source <(sed 's/=/="/; s/ *$/"/' /tmp/b.txt)
$ echo $NAME
VolksWagen golf
$ echo $YEAR
2014
$ echo $OWNERS

$ 
могут быть пробелы

1 Ответ

2 голосов
/ 25 января 2020

У вас уже есть ответ на свой вопрос. Вам просто нужно объединить кусочки:

source <(egrep 'NAME=|YEAR=' /tmp/ab.txt | sed 's/=/="/; s/ *$/"/')

Или:

source <(awk -F= '/NAME=|YEAR=/{print $1 "=" "\"" $2 "\""}' /tmp/ab.txt)

И еще одна последняя альтернатива:

source <(awk -F= '/NAME=|YEAR=/{printf "%s=\"%s\"\n",$1,$2}' /tmp/ab.txt)

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...