如何用另一个单词和一个动作替换文本文件中的单词?

时间:2010-12-07 08:25:43

标签: file text replace newline hidden-characters

大家好 假设我们有一个文本文件(file1.txt)

file1.txt包含许多单词和空格并输入字符(cR + LF)。 我想用输入字符替换后面的特定单词,并将其替换为该单词。我的意思是消除cr + lf字符。

怎么样?

谢谢

3 个答案:

答案 0 :(得分:0)

使用正则表达式应该做的很简单:

word\r\n替换为word

如何完成此操作取决于您的环境/编辑器/工具。你提到了cf + lf,暗示你正在使用Windows。

例如,如果您使用Notepad++,则它具有内置的正则表达式支持,您可以使用这些功能来获得目标。

更新:我尝试过这种变体:

下载适用于Windows的Vim

在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)

答案 1 :(得分:0)

我假设您正在询问如何以编程方式进行此操作 LF和CR是字符,因此它们具有分配的ascii代码(10,13)。您需要加载文本文件,逐字复制到新的缓冲区,每当遇到要替换的单词时 - 检查它是否后跟10,13,如果是,则不要复制这些字符。
然后将新缓冲区写回文件。

答案 2 :(得分:0)

如果您想将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),然后再进行转换。