Пожалуйста, помогите мне заменить путь в нескольких текстовых файлах в одну строку.

Предположим, у меня есть /home/shyam/Raghav/2014/12_dec/31122014/ в моих текстовых файлах, и я хочу заменить его на /home/shyam/Raghav/12_dec/31122014 , как я могу это сделать?

4 ответа4

1

В оболочке

cat original_file_prefix.* | sed 's/[" ]//g' > new_file_name

Или откройте ваши файлы в vim и наберите следующее (вам все равно придется его запускать)

:%s/[" ]//g

Это должно избавиться от кавычек и пробелов.

1

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

sed -i 's/\/home\/shyam\/Raghav\/2014\/12_dec\/31122014\//\/home\/shyam\/Raghav\/12_dec\/31122014/g' files*

-i опция редактирования файлов на месте.

Замените files* желаемым шаблоном поиска.

Обратите внимание, что это заменить /home/shyam/Raghav/2014/12_dec/31122014/ на /home/shyam/Raghav/12_dec/31122014 как вы предлагаете. Без окончательного / на результат. Если вы хотите, замените /g на \//g в конце команды.

1
sed -i 's:/home/shyam/Raghav/2014/12_dec/31122014/:/home/shyam/Raghav/12_dec/31122014:g' files*.txt
-1

Чтобы изменить все пути в нескольких текстовых файлах, я бы рекомендовал открыть все эти файлы в разделенном окне. т.е.
'vim -o [файл1] [файл2] [файл3] ...'
Теперь вы увидите, что все файлы открыты в отдельных буферах ViM. Теперь, чтобы заменить обновленный текст во ВСЕХ буферах, вы можете выполнить:
':windo% s/[SEARCH_PATTERN]/[REPLACE_PATTERN]/g'
И это должно выполнить команду замены текста во ВСЕХ буферах.

Ваша команда должна быть тогда:
:windo% s/\/home\/shyam\/Raghav\/2014\/12_dec\/31122014\//\/home\/shyam\/Raghav\/12_dec\/31122014 '

Надеюсь, поможет.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .