大家好假设我们有一个文本文件(file1.txt)
file1.txt 包含许多单词和空格并输入字符 (cR+LF)。我想用一个输入字符替换一个特定的单词,然后只用那个单词替换它。我的意思是消除 cr+lf 字符。
如何 ?
谢谢
大家好假设我们有一个文本文件(file1.txt)
file1.txt 包含许多单词和空格并输入字符 (cR+LF)。我想用一个输入字符替换一个特定的单词,然后只用那个单词替换它。我的意思是消除 cr+lf 字符。
如何 ?
谢谢
使用正则表达式应该可以缩短工作时间:
替换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)
我假设您正在询问如何以编程方式进行操作。
LF 和 CR 是字符,因此它们具有分配的 ascii 代码 (10,13)。您需要加载文本文件,逐字将其复制到新的缓冲区中,并且每当遇到要替换的单词时-检查它是否后跟 10,13,如果是,则不要复制这些字符。
然后将新缓冲区写回文件。
如果要将 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),然后再进行翻译。