标题: [文本处理] 批处理如何实现给文本内容添加行号? [打印本页]
作者: wh1234567 时间: 2014-7-20 18:13 标题: 批处理如何实现给文本内容添加行号?
文本内容比较多,但每行内容的前面没有序号,想用批处理自动给文本内容每行前面加个行号,请问如何写呢?
例如文本内容如下:
11.txt
需v师德师风
bdbdfbd-dfvd=dfd
231231323223123123232312323[fff]
sddfsfsfsd3231方便更方便
自动处理后格式为:
1-bdbdfbd-dfvd=dfd
2-231231323223123123232312323[fff]
3-sddfsfsfsd3231方便更方便
并输出到另外一个文本22.txt里
作者: jingyu9575 时间: 2014-7-20 19:36
- @echo off
- set i=1
- >22.txt (for /f "delims=" %%s in (11.txt) do (
- setlocal enabledelayedexpansion
- <nul set /p "_=!i!"
- setlocal disabledelayedexpansion
- <nul set /p "_=-%%s"
- echo,
- set /a i+=1
- ))
复制代码
如果分隔符用冒号就简单了:- findstr /N ".*" 11.txt > 22.txt
复制代码
作者: DAIC 时间: 2014-7-20 20:07
- sed = 11.txt | sed "N;s/\n/-/" > 22.txt
复制代码
作者: DAIC 时间: 2014-7-20 20:09
- gawk "{print NR\"-\"$0}" 11.txt > 22.txt
复制代码
作者: DAIC 时间: 2014-7-20 21:34
- powershell -c "foreach ($i in $(gc 11.txt)) {$n++; \"$n-\" + $i}" > 22.txt
复制代码
作者: wh1234567 时间: 2014-7-20 22:37
回复 2# jingyu9575
为什么会出现!i!这种情况,不能全部正常处理
作者: wh1234567 时间: 2014-7-20 22:40
不想使用第三方程序,希望大虾们帮助下吧,
作者: wh1234567 时间: 2014-7-20 22:44
每行前面添加行号和固定字符(例如-或.或空格)
作者: CrLf 时间: 2014-7-21 00:07
- hash /printf:"%d-%s",number,string /file 11.txt >22.txt
复制代码
作者: CrLf 时间: 2014-7-21 00:08
- @echo off
- (for /f "tokens=1* delims=:" %%a in ('findstr /n .* 11.txt') do echo %%a-%%b)>22.txt
复制代码
作者: CrLf 时间: 2014-7-21 00:19
本帖最后由 CrLf 于 2014-7-21 00:22 编辑
- @echo off
- for /f %%a in ('find /c /v "" ^<11.txt') do set count=%%a
- (for /l %%a in (1 1 %count%) do (
- setlocal enabledelayedexpansion
- set /p "str="&echo;%%a-!str!
- endlocal
- ))<11.txt >22.txt
复制代码
作者: wh1234567 时间: 2014-7-21 00:21
本帖最后由 wh1234567 于 2014-7-21 00:29 编辑
回复 10# CrLf
哦,这个正常,感谢您了
作者: CrLf 时间: 2014-7-21 00:22
- @echo off
- ((for /f "delims=" %%a in ('findstr /n .* 11.txt') do (
- set "str=%%a"
- set /a n+=1
- setlocal enabledelayedexpansion
- set "str=!str:*:=!"
- echo !n!-!str!
- endlocal
- ))>22.txt
复制代码
作者: wh1234567 时间: 2014-7-21 00:23
本帖最后由 wh1234567 于 2014-7-21 00:28 编辑
回复 11# CrLf
这个不行,输不出
作者: CrLf 时间: 2014-7-21 00:44
- @set @a=0;/*&echo off
- findstr /n .* 11.txt |cscript /nologo /e:jscript %0 >22.txt
- pause&exit
- */
- str = WScript.StdIn.ReadAll()
- str = str.replace(/^(\d+):/gm,'$1-')
- WScript.Echo(str)
复制代码
作者: CrLf 时间: 2014-7-21 00:46
- @set @a=0;/*&echo off
- cscript /nologo /e:jscript %0 <11.txt >22.txt
- pause&exit
- */
- str = WScript.StdIn.ReadAll()
- str = str.replace(/\r?\n/g,'");WScript.Echo(++i + "-')
- str = 'WScript.Echo((i=1)+"-'+str+'")'
- eval(str)
复制代码
作者: CrLf 时间: 2014-7-21 00:47
回复 14# wh1234567
我这测试没问题
作者: DAIC 时间: 2014-7-21 08:20
回复 7# wh1234567
XP还是Win7?
作者: wh1234567 时间: 2014-7-21 08:42
回复 18# DAIC
是XP的
作者: terse 时间: 2014-7-21 11:25
编码问题吗 但也不对
如是编码问题的话 10楼代码也不能处理
下面能正确显示不- @echo off
- for /f "tokens=1*delims=[]" %%i in ('find /v /n "" ^<11.txt')do echo,%%i-%%j
- pause
复制代码
作者: wh1234567 时间: 2014-7-21 20:48
回复 20# terse
不行
作者: elec 时间: 2014-7-23 09:12
回复 3# DAIC
来一个perl- perl -ne 'print "$.-$_"' 1.txt>2.txt
复制代码
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |