Board logo

标题: 单双行合并 [打印本页]

作者: sylovanas     时间: 2008-3-16 20:31    标题: 单双行合并

本文如下:

C:\1\1.1\0
C:\1\1.7\0
C:\1\1.5\0
C:\1\1.8

需求是将双行合并到单行并在中间加 => 符号

EX:
C:\1\1.1\0 => C:\1\1.7\0
C:\1\1.5\0 => C:\1\1.8

第三方工具的话可以用grep和sed
目前想到的方式是用grep或findstr去判断行号来做
但目前想不出方式来做

还请各位高手帮助了
作者: ThinKing     时间: 2008-3-16 23:27
sed "N;s/\n/ => /" urfile
作者: HAT     时间: 2008-3-16 23:31
纯P也可以实现,以前有人发过帖子:
@echo off
setlocal enabledelayedexpansion
rem m表示几行合并为一行
set /a m=2
for /f "tokens=*" %%i in (test.txt) do (
  set /a hangn+=1
  set /a n+=1
  set line=!line!%%i
  if !n! equ !m! (
    echo !line!>>result.txt
    set line=
    set /a n=0
  )
)
rem 以下代码用于处理剩下的行
set /a t=!hangn!%%!m!
if !t! equ 0 goto end
echo !line!>>result.txt
:end
endlocal

作者: sylovanas     时间: 2008-3-17 01:30
感谢,二楼ThinKing的可用

三楼HAT的因为这边可能会碰到特殊字元"!"所以我这里是尽量避开用使用环境变数延迟 (不好意思这是繁体中文的用法),而且可能会有很多行,所以也是尽量避免用到for影响执行效率,还是感谢了

[ Last edited by sylovanas on 2008-3-17 at 01:34 AM ]