大家好 假设我们有一个文本文件(file1.txt)
file1.txt包含许多单词和空格并输入字符(cR + LF)。 我想用输入字符替换后面的特定单词,并将其替换为该单词。我的意思是消除cr + lf字符。
怎么样?
谢谢
答案 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),然后再进行转换。