используя sed, чтобы добавить кавычки вокруг нескольких конкретных строк - PullRequest
0 голосов
/ 26 октября 2018

У меня трудности с достижением этого. Я пытаюсь манипулировать содержимым файла с помощью SED, чтобы вызвать кавычки вокруг нескольких строк. не могли бы вы помочь?

Содержимое файла:

/apps/as-agent -metaspace AlertsMS -discovery tcp://localhost:7877;localhost:7789 -listen tcp://localhost:7787 -input mySpace.txt

И я ожидаю, что SED получит содержимое файла, как показано ниже, с кавычками вокруг выбранных строк:

 /apps/as-agent -metaspace 'AlertsMS' -discovery 'tcp://localhost:7877;localhost:7789' -listen 'tcp://localhost:7787' -input 'mySpace.txt'

Ответы [ 2 ]

0 голосов
/ 26 октября 2018

Попробуйте:

sed "s/ \([^- ][^ ]*\)/ '\1'/g" file

Объяснение:

  • соответствует пробелу
  • [^- ] соответствует любому символу, кроме тире и пробела
  • [^ ]* соответствует нулю или нескольким непробельным символам
  • \( и \) должны заполнить группу захвата 1 частью входного совпадения регулярного выражения между ними, поэтому мы можем использовать ее взамещающая строка как \1
0 голосов
/ 26 октября 2018

этот awk one-liner делает это:

awk -v q="'" '{for(i=2;i<=NF;i++)if($i~/^[^-]/)$i=q $i q}7' file
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...