Выполнение функции Prime Key с использованием Sed в Bash

Я использую bash и пытаюсь использовать команду sed для сопоставления строки и заменять ее другим между двумя файлами.

Цель: заменить все строки [sp_ *], сопоставляя их с другим файлом, содержащим [sp_ * Var_Names]. Следует отметить, что: 1. Порядок синхронизирован, но не последователен в обоих файлах, поэтому нельзя использовать вставку. 2. Функциональность аналогична операции simpleKey в mysql.


Файл 1

+--sp_O00574_ | +--sp_Q9TV16_ | | +--sp_O18983_ | +--| (52) | | | +--sp_Q9BDS6_ | | +--| (26) | | | +--sp_O19024_ | | +--| (29) | | +--sp_Q9XT45_ 

File2

 O00574 CXCR6_HUMAN Q9TV16 CXCR6_PANTR O18983 CXCR6_CHLAE Q9BDS6 CXCR6_MACFA O19024 CXCR6_MACNE Q9XT45 CXCR6_MACMU 

Назначение: для sed -ie '/ O00574 / CXCR6_HUMAN / g' File1

встроенный скрипт Bash:

 cat File2 | while read id; do upID=`echo $id | cut -d " " -f1`; upName=`echo $id | cut -d " " -f2`; sed -ie 's/sp_$upID/$upName/g' File1; done 

Script.sh

 #/bin/bash cat File2 | while read id; do upID=`echo $id | cut -d " " -f1` upName=`echo $id | cut -d " " -f2` sed -ie 's/sp_$upID/$upName/g' File1 done 

Проблема: команда sed не работает в цикле. Никаких изменений в File1 вообще не наблюдается. Если я повторяю команду sed из сценария, а затем запускаю его в терминале, он работает так, как ожидалось. Я не могу понять, в чем проблема.

Благодарим вас за ценные комментарии и решение.

One Solution collect form web for “Выполнение функции Prime Key с использованием Sed в Bash”

сгенерируйте скрипт sed из вашего индексного файла (File2) вместо цикла, затем запустите этот скрипт против вашего File1 .. Это будет МНОГО быстрее :).

  awk '{ print "s/sp_"$1"/"$2"/g"}' File2.txt > tranform.sed 

затем выполните:

  sed -i -f transform.sed File1.txt 

поэтому весь ваш скрипт может быть:

 awk '{ print "s/sp_"$1"/"$2"/g"}' File2.txt > transform.sed sed -f transform.sed File1.txt ## if you want to remove your transformation file rm transform.sed 
  • Свернуть несколько повторяющихся частей последовательных строк
  • sed - использовать файл1 для поиска замен, содержащихся в файле2 для строк из файла3
  • «Скобки не сбалансированы», хотя я избежал этого?
  • Разбор CSV с использованием AWK или SED
  • Переименуйте имена файлов MP3 в шаблон
  • Запись файлов grep за последние 30 минут
  • Фиксация заголовка и печати
  • Выход трубопровода sed / grep не работает
  • Найти и заменить все перед строкой текста
  • Удалить комментарии в файле C
  • Как я могу правильно использовать команду sed в этом конкретном сценарии
  • Linux и Unix - лучшая ОС в мире.