向我提供了一个参差不齐的右侧 UNIX 文本文件,其中大多数行的 CR/LF 位置似乎设置为 100。向我提供了一个列布局文档,该文档将文件取出到位置 150。有没有办法更改 CR/ LF位置到150?如果我使用提供的格式导入 SQL Server,由于换行符为 100,SQL Server 会抓取下一行的前 50 个字符。
问问题
196 次
1 回答
0
我可以提供 2 个解决方案。
使用列模式
- 根据文件第一行的状态栏将插入符号移动到第 151 列。
现在插入符号位置还剩下 150 个字符。 - 单击菜单项Column Mode上的菜单 Column以打开此模式。
- 单击菜单项Insert/Fill Columns上的菜单Column,输入像 # 这样的单个字符并执行此命令。
- 您现在在第 151 列插入的所有行上看到字符 #。
单击菜单项Delete Columns上的菜单Column,输入1并执行命令。 - 单击菜单项列模式上的菜单列以关闭此模式。
现在文件中的所有行都有 150 个字符。Ctrl+End如果此行不包含任何其他内容,您可能希望使用并删除最后一行中的 150 个空格。
您可以在菜单视图中启用显示行尾以直观地检查行。
此解决方案通常是处理小文件的最简单方法。
使用 Perl 正则表达式替换
- 在文件顶部插入 150 个空格,使用选择 150 个空格Ctrl+Shift+Home并将它们剪切Ctrl+X到剪贴板。
- 运行Perl 正则表达式 Replace All从文件顶部使用$作为搜索字符串(表示行尾)并将Ctrl+V150 个空格粘贴到替换编辑字段中,替换此编辑字段中已经存在的所有内容。
现在所有行都有 150个或更多字符。 - 再运行一个 Perl 正则表达式 Replace All 从文件顶部用^(.{150}).*$作为搜索字符串和\1作为替换字符串。
第二个 Perl 正则表达式使用标记组为每行的前 150 个字符向后引用\1以保持它们从第 151 列到行尾的每行中删除所有其他插入的空格。
这个解决方案更适合非常大的文件,当然也适用于支持 Perl 正则表达式替换的其他编辑器。
于 2014-11-13T15:30:24.303 回答