Может быть выполнено с помощью sed или даже с использованием только инструментов bash.
Классическое решение bash:
var="$(cat file.txt)";while read -r id name;do var="${var//@$id/$name}";done<mapfile.txt;echo "$var"
Вы можете добавить > newfile.txt
к последней команде, чтобы отправить окончательный текст в новом файле.
Решение Sed с записью изменений в один и тот же файл:
while read -r id name;do sed -i "s/\@$id/$name/g" textfile.txt;done<mapfile.txt
Это решение может работать медленнее, если файл карты / текстовый файл довольно большой, поскольку внешнее приложение sed вызывается для каждой записи, найденной в файле карты.
Оба решения работают с вашим образцом.
$ cat b.txt
<@U39RFF91U> for all the help in this project!
Thanks for your help to enhance the data quality <@U2UNRTLBV> <@U39RFF91U> <@U2UQCN023>!
$ cat c.txt
U39RFF91U Person1
U2UNRTLBV Person2
$ var="$(cat b.txt)";while read -r id name;do var="${var//@$id/$name}";done<c.txt #Batch Solution
$ echo "$var"
<Person1> for all the help in this project!
Thanks for your help to enhance the data quality <Person2> <Person1> <@U2UQCN023>!
$ while read -r id name;do sed -i "s/\@$id/$name/g" b.txt;done<c.txt #SED solution
$ cat b.txt
<Person1> for all the help in this project!
Thanks for your help to enhance the data quality <Person2> <Person1> <@U2UQCN023>!
Вы можете подставить массив в массив, поэтому
FILENAMES=(somefile*.txt)
и сослаться на первый элемент следующим образом
echo "something:${FILENAMES[0]}"
или они все такие
echo "somethings:${FILENAMES[@]}"
Я настоятельно рекомендую использовать "двойные кавычки" ваших переменных при их использовании. Это позволяет избежать их неожиданного расширения на несколько слов.
Попробуйте определить переменную следующим образом:
FILENAME=\ somefile*.txt; # that is, with a leading space... and then
echo "something:"$FILENAME;
переменная интерполируется в...что-то :какой-то файл *.txt
затем этот подстановочный знак расширяется до... чего-то :somefile003.txt
Эти два аргумента затем передаются функции echo, которая сразу же переводит их в стандартный вывод.