Как заменить слово в текстовом файле другим словом и действием? - PullRequest
0 голосов
/ 07 декабря 2010

привет всем Предположим, у нас есть текстовый файл (file1.txt)

file1.txt содержит много слов и пробелов и вводит символы (cR + LF). Я хочу заменить определенное слово, которое следует за вводом, и заменить его только этим словом. Я имею в виду устранение символа cr + lf.

Как?

Спасибо

Ответы [ 3 ]

0 голосов
/ 07 декабря 2010

Я предполагаю, что вы спрашиваете о том, как сделать это программно.
LF и CR - символы, и поэтому им назначен код ascii (10,13).вам нужно будет загрузить текстовый файл, скопировать его в новый буфер слово за словом, и всякий раз, когда вы встречаете слово, которое хотите заменить - проверьте, следует ли за ним 10,13, и просто не копируйте эти символы, если это так.
затем запишите новый буфер обратно в файл.

0 голосов
/ 07 декабря 2010

Если вы хотите преобразовать 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) сначала и потом делай перевод.

0 голосов
/ 07 декабря 2010

Использование регулярных выражений должно сократить эту работу:

замените 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)
...