|
justine
初级用户
积分 20
发帖 9
注册 2007-9-24
状态 离线
|
『楼 主』:
请教, 如何批量删除特定字符后的换行符?
想批量处理单个文件下特定字符后的换行符, 文件比较长!
文件名: aaa.txt
格 式: 2007-9-12;
9,972.19
2007-9-13;
9,762.19
2007-9-14;
9,372.19
如何才能自动删除 ; 后的换行符? 完成后保存为另一份文件,如 bbb.txt
文件比较长, 一般超过6万行, 格式如上, 没有其它多余字符...
请大家指教!!
|
|
2007-9-24 13:44 |
|
|
wudixin96
银牌会员
积分 1928
发帖 931
注册 2007-1-6
状态 离线
|
|
2007-9-24 14:12 |
|
|
justine
初级用户
积分 20
发帖 9
注册 2007-9-24
状态 离线
|
『第
3 楼』:
是的, 准确的说是隔行复制...
|
|
2007-9-24 14:18 |
|
|
wudixin96
银牌会员
积分 1928
发帖 931
注册 2007-1-6
状态 离线
|
『第
4 楼』:
2007-9-12;
9,972.19
2007-9-13;
9,762.19
2007-9-14;
9,372.19
========================================
2007-9-12;9,972.19
2007-9-13; 9,762.19
2007-9-14; 9,372.19
改后是这样的格式吗?
|
|
2007-9-24 14:21 |
|
|
justine
初级用户
积分 20
发帖 9
注册 2007-9-24
状态 离线
|
|
2007-9-24 14:23 |
|
|
wudixin96
银牌会员
积分 1928
发帖 931
注册 2007-1-6
状态 离线
|
『第
6 楼』:
用sed
@echo off
sed "$!N;s/\n//" 2.txt
pause
|
|
2007-9-24 14:29 |
|
|
justine
初级用户
积分 20
发帖 9
注册 2007-9-24
状态 离线
|
『第
7 楼』:
不好意思, 我完全是个新手, 可以用bat吗?
而且
Quote: | Originally posted by wudixin96 at 2007-9-24 02:29 PM:
用sed
@echo off
sed "$!N;s/\n//" 2.txt
pause |
|
好像没有指定文件名和路径??
|
|
2007-9-24 14:31 |
|
|
wudixin96
银牌会员
积分 1928
发帖 931
注册 2007-1-6
状态 离线
|
『第
8 楼』:
@echo off
setlocal enabledelayedexpansion
for /f "tokens=1* delims=:" %%i in ('findstr /n .* 2.txt') do (
set /a num=%%i%%2
if not !num!==0 (set str=%%j) else (echo !str!%%j)
)
pause 试试这个吧
|
|
2007-9-24 14:37 |
|
|
justine
初级用户
积分 20
发帖 9
注册 2007-9-24
状态 离线
|
『第
9 楼』:
执行了, 可是没有看到保存的文件...
可以直接覆盖原文件吗?
|
|
2007-9-24 14:43 |
|
|
wudixin96
银牌会员
积分 1928
发帖 931
注册 2007-1-6
状态 离线
|
『第
10 楼』:
只能先导出到临时文件,再删除原文件,然后改临时文件名为原文件名
|
|
2007-9-24 14:45 |
|
|
justine
初级用户
积分 20
发帖 9
注册 2007-9-24
状态 离线
|
『第
11 楼』:
第二个写法应该是直接合并两行, 我还是希望只删除 ; 后的换行符, 然后覆盖原文件,这样文本增加新的内容 (格式同修改前)也不用重复执行...
|
|
2007-9-24 14:51 |
|
|
justine
初级用户
积分 20
发帖 9
注册 2007-9-24
状态 离线
|
『第
12 楼』:
还是很多谢 wudixin96 !
|
|
2007-9-24 14:52 |
|
|
yoyodos
初级用户
积分 128
发帖 59
注册 2007-9-15
状态 离线
|
『第
13 楼』:
Quote: | Originally posted by wudixin96 at 2007-9-24 02:37 PM:
[code]@echo off
setlocal enabledelayedexpansion
for /f "tokens=1* delims=:" %%i in ('findstr /n .* 2.txt') do (
set /a num=%%i%%2
if not !num!==0 (set str=%%j) else (echo !str!%%j ... |
|
;)学习了
|
|
2007-9-24 17:28 |
|
|
yoyodos
初级用户
积分 128
发帖 59
注册 2007-9-15
状态 离线
|
『第
14 楼』:
@echo off
setlocal enabledelayedexpansion
for /f "tokens=1* delims=:" %%i in ('findstr /n .* 2.txt') do (
set /a n=%%i%%2
set/a l=0
if not !n!==0 (
set str=!str!%%j
) else (
echo !str!%%j
set/a l=1
)
if !l!==1 set str=
)
pause 适用性好些,学习下
|
|
2007-9-24 19:55 |
|
|
terse
银牌会员
积分 2404
发帖 946
注册 2005-9-8
状态 离线
|
『第
15 楼』:
发一个版主的学习
@echo off
set num=0
setlocal enabledelayedexpansion
for /f "delims=" %%i in (aaa.txt) do (
set /a num+=1
set str=!str! %%i
if !num! equ 2 echo!str! && set num=0 & set str=
)
pause
|
|
2007-9-24 20:10 |
|