Использование sed для добавления префикса к переменному содержимому в оболочке korn - PullRequest
0 голосов
/ 11 марта 2019

Я пытаюсь держаться подальше от всех временных файлов времени выполнения. Мне удалось заменить их всех на переменную времени выполнения, но одна команда затрудняет мне использование команды с переменной.

Содержимое rimco: содержит местоположение файла

   /home/bim 
   /home/ram 
   /home/gps 
   /home/hdr 
   /home/pal 

bim content: содержит набор чисел

28800,1536,14400,768
11100,12312,902,321
3044,1536,1290,334
3044,1536,1290,334
11100,12312,902,321
28800,1536,14400,768

Цель состоит в том, чтобы добавить префикс к переменной $output, если искомое число найдено. строка хранится в $output с префиксом $dte

dte="available" 
for f in $(cat rimco)
  do 
   out=`grep 768 $f`
     output+=`echo -e "\n$out"| sed "s/^/$dte,/"`
 done

Ну, результат непривлекательный, содержание, повсюду

available,
available,28800,1536,14400,768
available,28800,1536,14400,768available,
available,28800,1536,14400,768
available,28800,1536,14400,768available,
available,28800,1536,14400,768
available,28800,1536,14400,768available,
available,28800,1536,14400,768
available,28800,1536,14400,768available,
available,28800,1536,14400,768
available,28800,1536,14400,768

Цель состоит в том, чтобы получить это

available,28800,1536,14400,768
available,28800,1536,14400,768
available,28800,1536,14400,768
available,28800,1536,14400,768
available,28800,1536,14400,768
available,28800,1536,14400,768
available,28800,1536,14400,768
available,28800,1536,14400,768
available,28800,1536,14400,768
available,28800,1536,14400,768

Есть идеи, как это исправить?

спасибо

Ответы [ 2 ]

0 голосов
/ 13 марта 2019

Вот мой ответ для многих файлов grep. С дополнительной переменной результат для конкатенации и grep для избавления от пустой строки:

dte="available"
result="" 
for f in $(cat rimco)
  do 
     out=`grep 768 $f`
     output=`echo -e "$out" | sed "s/^/$dte,/"`
     result="$result\n$output"
 done

echo -e "$result" | grep -v "^$"

Возвращает:

available,28800,1536,14400,768
available,28800,1536,14400,768
available,28800,1536,14400,768
available,28800,1536,14400,768
available,28800,1536,14400,768
available,28800,1536,14400,768
available,28800,1536,14400,768
available,28800,1536,14400,768
available,28800,1536,14400,768
available,28800,1536,14400,768
0 голосов
/ 12 марта 2019

Если вы измените ваш grep на один, он будет работать (удалите цикл for):

dte="available"
files=$(cat rimco)
out=`grep 768 $files`
output=`echo -e "$out" | sed "s/^.*:/$dte,/"`
echo -e "$output"

sed теперь заменяет имя файла (результат из grep) плюс двоеточие: на $ dteстрока

...