Как заменить совпадающие слова, определенные в одном файле, на другой файл?

La ​​forma de conseguir lo que necesitas es:

chattr +a /testdir

Configure los permisos en el propio directorio para que solo el propietario tenga permisos de escritura.

El interruptor ahace que los archivos se puedan crear y modificar internamente pero no eliminar.

La página manpara chattrsolo dice lo que hace apara los archivos, pero de hecho hace lo anterior cuando se usa en un directorio, como descubrí yo mismo cuando buscaba una manera de hacer lo mismo.

0
15.06.2019, 13:29
1 ответ

Попробуйте эту команду:

sed -e 's/org/export org/g' file2 > varset; source./varset; rm varset; sed -r -e 's/(org[0-9]+)([^0-9])/${\1}\2/g' file1 | envsubst

Это выведет желаемый текст на стандартный вывод. Если вы хотите постоянно записывать эти изменения, добавьте > new_file_nameв конец цепочки команд.

В этой цепочке команд sed сначала использует ваш файл2, чтобы установить ваши переменные в качестве переменных среды, чтобы к ним можно было обращаться последующими командами. Затем он преобразует старые имена в файле 1 в имена переменных, которые оболочка поймет при использовании нами команды source. Затем это передается команде envsubstдля замены переменных среды, содержащихся в выводе, так что ${org8}интерпретируется, например, как Xcf.

Обратите внимание, что это решение несколько уникально для ваших конкретных обстоятельств, и его необходимо скорректировать, если вы хотите применить его более широко.

*РЕДАКТИРОВАТЬ Я адаптировал выражение sed для работы с любым из исходных file1, которые вы предоставили.

0
28.04.2021, 23:32

Теги

Похожие вопросы