Как заменить слово в текстовом файле другим словом и действием?
Привет всем Предположим, у нас есть текстовый файл (file1.txt)
file1.txt содержит много слов и пробелов и вводит символы (cR+LF). Я хочу заменить определенное слово, которое следует, вводимым символом и заменить его только этим словом. Я имею в виду устранение cr+lf персонажа.
Как?
Спасибо
3 ответа
Если вы хотите конвертировать CRLF в LF:
sed 's/.$//' # assumes that all lines end with CR/LF
Если вы хотите удалить CRLF в целом
cat file1.txt | tr '\n' ' ' # join the lines with a space
cat file1.txt | tr -d '\n' # join the lines without a space
Возможно, вам придется сначала преобразовать окончания строк в unix (CRLF в LF), а затем выполнить перевод.
Я полагаю, вы спрашиваете о том, как сделать это программно.
LF и CR являются символами, и поэтому им присвоен код ascii (10,13). вам нужно будет загрузить текстовый файл, скопировать его в новый буфер слово за словом, и всякий раз, когда вы встречаете слово, которое хотите заменить - проверьте, следует ли за ним 10,13, и просто не копируйте эти символы, если это так.
затем запишите новый буфер обратно в файл.
Использование регулярных выражений должно сократить эту работу:
замещать word\r\n
с word
Как именно это сделать, зависит от вашей среды / редактора / инструментов. Вы упомянули cf + lf, который намекает на то, что вы используете Windows.
Например, если вы используете Notepad++, он имеет встроенную поддержку регулярных выражений, и вы можете использовать эти возможности для достижения своей цели.
Обновление: я попробовал этот вариант, он работает:
Загрузите Vim для Windows.
Откройте свой файл в Vim.
В нем введите следующую команду:
%s/\v([[:digit:]]+NPN[[:alpha:]]+)\n/\1 /g
Объяснение:
%s - work for all lines
\v - easier regex manipulation regarding backslashes
([[:digit:]]+NPN[[:alpha:]]+) - match some digits, then NPN, then letters and capture this
\n - match end of line
\1 - replace everything with first group and two spaces
g - do this many times for each line (this is basically optional)