标题: [文本处理] [已解决]如何用批处理实现隔一行加一行空行? [打印本页]
作者: qq114527345 时间: 2011-1-9 22:06 标题: [已解决]如何用批处理实现隔一行加一行空行?
有时候排版文档会需要隔一行空一行,这样看起来比较好看,方便阅读
那么,请问如何用批处理实现隔一行加一行空行呢?
[ 本帖最后由 qq114527345 于 2011-1-10 19:27 编辑 ]
作者: tmplinshi 时间: 2011-1-9 22:21
- @echo off
- (for /f "delims= eol=" %%a in (1.txt) do (
- echo,%%a
- echo,
- ))>1_.txt
复制代码
作者: hanyeguxing 时间: 2011-1-9 22:21
- @echo off
- (for /f "usebackq delims=" %%a in ("1.txt") do (echo/%%a&echo/))>1_.txt
复制代码
[ 本帖最后由 hanyeguxing 于 2011-1-9 22:23 编辑 ]
作者: Batcher 时间: 2011-1-10 09:58
复制代码
- gawk "1;{print \"\"}" 1.txt | more >2.txt
复制代码
- gawk "BEGIN{ORS=\"\n\n\"};1" 1.txt | more >2.txt
复制代码
作者: qq114527345 时间: 2011-1-10 17:40
感谢三位大大!
我在想Batcher大是不是用LINUX系统的哈,不过sed -i G 1.txt真的超简洁哈~
还有请问一下tmplinshi大的代码里的 eol= 和hanyeguxing大的代码里的 usebackq 都有些什么作用?
其实这样就可以了~
-
- @echo off
- (for /f "delims=" %%a in (1.txt) do (echo,%%a &echo,))>1_.txt
复制代码
我再加个要求哈,要求可以设定间隔的行数,比如说隔两行加一行空行,或者隔三行等~
复制代码
作者: tmplinshi 时间: 2011-1-10 18:23
- @echo off
- set /p jg=请输入要间隔的行数:
- (for /f "delims= eol=" %%a in (1.txt) do (
- echo,%%a
- set /a "n = n %% jg + 1, 1 / (n - jg)" || echo,
- )) >1_.txt 2>nul
复制代码
解释:
“set /a n = n %% jg + 1”是让 n 的值反复在 1~间隔的行数 间循环,例如输入的是 3,则 n 的值就反复为 1、2、3、1、2、3...其中的“%”是取余运算,也就是计算 n 除以 jg 的余数。
后面的“1 / (n - jg)”,假如输入的间隔是 3,当 n 等于 3 时,“1/(3 -3)”就会发生错误,错误就会执行“||”后面的命令。“2>nul”用来屏蔽错误提示。
——————————————————————————
因为默认忽略以分号“;”开头的行,用“eol=”就是忽略以“”开头的行。“”是退格符,也可以用其他不存在于行首的字符。
当文件名中有空格,就必须用双引号括起来,这时如果不用 usebackq,"1.txt" 就会作为字符串处理,而不是文件。
[ 本帖最后由 tmplinshi 于 2011-1-10 18:31 编辑 ]
作者: Batcher 时间: 2011-1-10 18:28 标题: 回复 5楼 的帖子
命令行工具 sed.exe 下载地址:
http://bbs.bathome.net/thread-3981-1-1.html
作者: qq114527345 时间: 2011-1-10 19:26
非常感谢!又学到不少东西呵呵~
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |