Как заменить слово в текстовом файле другим словом и действием?

Привет всем Предположим, у нас есть текстовый файл (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)
Другие вопросы по тегам