Пожалуйста, сделайте резервную копию ваших файлов , прежде чем пытаться что-либо из этого.
Трудно сказать, как выглядит содержимое ваших файлов из описания, но, предполагая, что это файл, разделенный пробелами, изменить первый столбец (первое слово в каждой строке) с помощью vim
, не открывая каждый из них вручную. файл попробуйте это из командной строки:
for fname in * ; do vim -N -c ":%s/\v^\w+/NEWTEXT/g|:wq" "${fname}" ; done
где:
*
это глобус оболочки и означает «все файлы». Если ваши файлы не находятся в отдельном каталоге, или вы не хотите, чтобы на них влияли все, предоставьте список вроде for fname in file1 file2 file3...
NEWTEXT
- текст замещения.
-c
выполняет vim
команду при запуске
:
входит в командный режим в vim
%
делает весь файл объектом операции
s/REGEXP/SUBSTITUTION/g
означает вставку ЗАМЕНА вместо каждой строки, соответствующей REGEX
\v
делает экранирование и специальные символы в vim
регулярные выражения ведут себя как в регулярном выражении POSIX.
^
означает «от начала строки»
\w
означает «любой символ слова»
+
означает «один или несколько предшествующих символов»
|
разделяет vim
команды (это не оболочка)
:wq
сохраняет измененный файл и выходит vim
Использование vim
таким способом может быть не самой лучшей идеей.
Рассмотрите возможность использования, например, sed
вместо
for fname in * ; do
sed -ir "s/^\w+/NEWTEXT/g" "${fname}"
done
- r
флаг указывает sed
использовать регулярное выражение
- i
говорит ему о необходимости изменения файла, т. Е. Перенаправление вывода не требуется.