2010-12-07 2 views
0

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

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

Как?

Спасибо

ответ

0

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

заменить word\r\n с word

Как это точно сделано, зависит от вашей среды/редактора/инструментов. Вы упомянули cf + lf, в котором намекает, что вы используете Windows.

Если вы используете Notepad++, например, он имеет встроенную поддержку регулярных выражений, и вы можете использовать эти средства для достижения своей цели.

Update: Я попробовал этот вариант он работает:

Скачать 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) 
+0

Ну, Есть много разных форм моего конкретного слова. например, если моим ключевым словом является NPN, есть такие слова, как 02NPNPAGLUBE, 12NPNSEALANT и ... но проблема в конце всех этих слов, есть знак абзаца (введите символ), и я хочу его устранить и поставить 2 пространства. Как? Как я могу указать на слово? – odiseh 2010-12-07 08:43:22

0

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

0

Если вы хотите конвертировать CRLF в ЛФ:

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

Смежные вопросы