Я пытаюсь написать скрипт, который заменит каждое слово файла другим соответствующим словом в соответствии с файлом списка.Bash: заменить слово другим словом из списка
phylofile
(файл должен быть изменен) является:
(((swallowtail,noctuid):90,pyraloid):74,crambine)
namefile
(список отображений из старых к новым прописью) является:
crambine orocrambus
swallowtail papilio
noctuid catocala
Вывод должен быть:
(((papilio,catocala):90,pyraloid):74,orocrambus)
Надеюсь, что более ясно, что
Я написал следующий сценарий:
echo -n "Enter the path to the file where names should be changed: "
read phylofile
echo -n "Enter the path to the file containing the string searched and the replacing string: "
read namefile
while read var
do
searchstring=`echo "$var"|awk -F= '{print $1}'`
replacestring=`echo "$var"|awk -F= '{print $2}'`
sed "s/$searchstring/$replacestring/g" $phylofile > outputfile
done < $namefile
Я получаю сообщение об ошибке (французский) означает не регулярное выражение в SED команды.
я был бы очень благодарен, если вы могли бы помочь
Пожалуйста, обратите внимание на [редактирование-помощь] (Http: // StackOverflow .com/редактирование-помощь). – Cyrus
Действительно, Кир прав. Вы должны узнать, как использовать исходный код формата в поле вопроса. Однако вы новичок, я сделал это на этот раз для вас. Вернемся к проблеме, вы можете посмотреть здесь: http://stackoverflow.com/questions/29613304/is-it-possible-to-escape-regex-metacharacters-reliably-with-sed – hek2mgl
вы можете делать все в sed, зачем использовать awk? – tinySandy