Не удается восстановить твердотельный накопитель Kingston -ни разделов, ни данных

Вы можете использовать readдля разделения строк на основе пробелов (, которые, похоже, используются в вашем файле ). Что-то вроде этого:

while read set year; do
    DoStuffWith "$set" "$year"
done 

Другие примечания:

  • Обратите внимание, что в приведенном выше примере я использовал имена переменных в нижнем регистре. Существует куча всех -имён заглавных букв со специальными значениями, и самый безопасный способ избежать конфликтов с ними — придерживаться нижних -или смешанных -переменных регистра (, если вы не хотите ] особое значение ).

  • Не перебирайте вывод ls, просто используйте for i in *; do. И дважды -цитируйте ссылку на $i, чтобы в некоторых случаях избежать странного синтаксического анализа.

    За исключением того, что вам не нужно этого делать, sedможет перебирать файлы самостоятельно, если вы используете sed -i "" 'whatever' *.

  • В команде sedпохоже, что вы пытаетесь использовать подстановку переменных и двойные -кавычки внутри одинарных -строк в кавычках, и это не работает. Если вы не хотите, чтобы двойные -кавычки были буквально частью строк поиска/замены, используйте вместо этого:

    sed -i "" "s/$set/$year/g" *
    

    Если вам нужны буквальные двойные -кавычки при поиске и замене строк, экранируйте их:

    sed -i "" "s/\"$set\"/\"$year\"/g" *
    
  • Похоже, вы планируете пройтись по файлу в цикле, и для каждой строки зациклиться на каждом файле, заменив одну эту строку. Почему бы не сделать за один прогон все замены? То есть вместо того, чтобы запускать sedкомандой s/100/2007/g, а затем снова командой s/FFF/1993/g, а затем снова... почему бы не запустить ее только один раз командой s/100/2007/g; s/FFF/1993/g; s/7E7/1994/g;...?

    Вам нужно построить команду sedв цикле, что-то вроде этого:

    sedCommand=""
    while read set year; do
        sedCommand+="s/$set/$year/g; "
    done 
  • Наконец, меня беспокоят подобные глобальные замены. Вы уверены, что «100» не встречается ни в одном файле, кроме тех случаев, когда его следует заменить на «2007»? Включает ли это файл test.txt?

    У вас есть резервная копия всех этих файлов?Вы действительно должны, прежде чем бросать что-то подобное на что-то, что вы не хотите потерять.

1
10.05.2021, 12:38
1 ответ

Вы можете попробовать использовать foremostв системе unix. Он прочитает поток байтов ОС и попытается получить некоторые файлы на основе заголовка и магических чисел.

Вы можете попробовать эту команду:

foremost -i file240G.dump -o directory/
0
28.07.2021, 11:33

Теги

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