Присвоение вывода grep к переменной

Поскольку это что ls команда должна сделать. Ваш сценарий эффективно работает

ls -al . *.pdf

И это перечислит все файлы в текущем каталоге (как указано .). Не учтите точку, и у Вас будет просто PDFs.

1
18.11.2018, 11:17
2 ответа

Попытка:

el_value=$(sed -n "s/.*<$2>\([^:<]*\).*/\1/p" < "$1")

В Вашем коде проблемы были:

  • одинарные кавычки вокруг $2 который означал, что это не было расширено
  • пропавшие без вести / искать закрывающий тэг в grep команда.
1
27.01.2020, 23:54

Я думаю, что это - проблема кавычки. В Вашем grep & sed аргумент, $1 и $2 не анализируются из-за Ваших простых кавычек ('). Попробуйте этого:

el_value=$(grep "<$2>.*<$2>" $1 | sed -e "s/^.*<$2/<$2/" | cut -f2 -d'>'| cut -f1 -d':')
0
27.01.2020, 23:54
  • 1
    Спасибо за ответ, но я все еще получаю те же результаты. –  user34769 22.03.2013, 19:48
  • 2
    Отправьте некоторое содержание для тестирования. –  GHugo 22.03.2013, 19:59
  • 3
    Создайте файл под названием file.xml. Добавьте эту строку к файлу: <p4Port> server1:1986 </p4port>. Затем передача в file.xml server1 server2 –  user34769 22.03.2013, 20:13
  • 4
    значений, я думаю, что Вы хотите сделать это: el_value=$(grep "<$2>.*</$2>" $1 | sed -e "s/^.*<$2/<$2/" | cut -f2 -d'>'| cut -f1 -d':'). И назовите его с file.xml p4Port server1. Помните, что xml langage не является регулярным langage, таким образом, Вы могли бы найти случай, который не будет работать Ваш sed exp. Используйте xml синтаксический анализатор и сценарий langage как python/ruby/perl/other –  GHugo 22.03.2013, 20:53

Теги

Похожие вопросы