Как заменить текстовую строку в каком-либо файле типа (например, двоичный файл и …) и нескольких файлах в Linux?

NameBargain.com является недорогим филиалом Register.com. Это просто и просто со всем материалом, в котором фанат нуждается по хорошей цене. Я использовал их много лет и все еще очень счастливый.

Я действительно пробовал GoDaddy некоторое время назад, и обычно они были в порядке. Основная проблема в то время состояла в том, что они не поддерживали IDNs (интернационализировавшие доменные имена) - не знают, делают ли они это теперь. И их процесс контроля был действительно раздражающим - было почти невозможно пройти через него, не покупая все виды отдельно оплачиваемых предметов.

2
задан 23 December 2009 в 09:51
1 ответ

Проблема с редактированием двоичных файлов состоит в том, что они часто размечаются в конкретном формате с положением конкретных байтов, имеющих значение. Так пытаясь автоматизировать, который может быть очень трудным и должен, вероятно, быть сделан с инструментом, который понимает формат файла.

Следующий сценарий Bash может использоваться для редактирования текстовых файлов:

#!/bin/bash
while read -r file
do
    {
    tempfile=$(tempfile) || tempfile=$(mktemp) || { tempfile="/tmp/tmpfile.$$" && touch "$tempfile"; } &&
    sed 's/original text/new text/g' "$file" > "$tempfile" &&
    mv "$tempfile" "$file"
    } || echo "Edit failed for $file"
done < <(find . -type f)

или измените вторые и последние строки на:

find . -type f | while

и

done

Если Ваша версия sed может сделать оперативное редактирование, затем можно устранить создание временных файлов (все между do и done выше) и использование это sed управляйте в цикле вместо этого:

sed -i 's/original text/new text/g' "$file"
2
ответ дан 3 December 2019 в 12:23

Теги

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