Ksh скрипт для преобразования списка

#unix #ksh

#unix #ksh

Вопрос:

После применения некоторых команд у меня есть набор данных, как показано ниже

 graph_name=abc
group_name=def
factory=xyz
export a=1
export b=2
export c=3
  

Теперь, как я могу получить приведенный ниже результат

 graph_name=abc
export a=1
export b=2
export c=3
  

Мне нужны все инструкции export в дополнение к записи, содержащей только graph_name.

Комментарии:

1. Вам нужна только первая строка «graph_name», потому что ее значение содержит экспортированные имена переменных?

2. нет, это не так, я задал это в соответствии с моим требованием. Спасибо, Джек.

3. Ах, я прочитал «имя_группы» как другую запись «имя_графа».

Ответ №1:

 sed -n -e '/^graph_name=/p' -e '/^export /p' your-file
  

Это не печатается по умолчанию ( -n ); затем он явно печатает те строки, которые соответствуют тому, что вы хотите.

Ответ №2:

Простая команда grep:

 grep -w -e "graph_name=" -w -e "export" tmp FILENAME
  

Ответ №3:

некоторые решения awk:

 awk '/^graph_name=/ || /^export /' filename
awk '/^(graph_name|export)>/' filename
awk -F '[= ]' '$1 == "graph_name" || $1 == "export"' filename
  

Ответ №4:

Попробуйте egrep, чтобы соответствовать любому из нескольких шаблонов, разделенных символом канала. Здесь я ищу строки, начинающиеся с «graph_name» или «export»:

 egrep "^graph_name|^export" your_file