Board logo

标题: [文本处理] [已解决]批处理如何把文本一行变多行? [打印本页]

作者: wangdao6699    时间: 2015-4-5 17:10     标题: [已解决]批处理如何把文本一行变多行?

如    69|8569|986|......

结果,以分隔符 |  标志

69
8569
986
。。。
作者: DAIC    时间: 2015-4-5 17:15

  1. sed "s/|/\n/g" 1.txt > 2.txt
复制代码

作者: pcl_test    时间: 2015-4-5 17:22

批处理for语句从入门到精通
http://www.bathome.net/thread-2189-1-1.html
作者: pcl_test    时间: 2015-4-5 17:31

  1. @echo off
  2. set str="69|8569|986|456|678|6898"
  3. set "str=%str:|=,%"
  4. for %%i in (%str:~1,-1%) do echo %%i
  5. pause
复制代码

作者: pcl_test    时间: 2015-4-5 17:44

本帖最后由 pcl_test 于 2015-4-5 17:45 编辑
  1. @echo off
  2. set str="69|8569|986|456|678|6898"
  3. for /l %%a in (1 1 6) do call :loop %%a %str%
  4. pause
  5. :loop
  6. for /f tokens^=%1^ delims^=^| %%i in (%2) do echo %%i
  7. goto :eof
复制代码

作者: cobat    时间: 2015-4-5 18:09

本帖最后由 cobat 于 2015-4-6 00:10 编辑
  1. @echo off
  2. set "s=69|8569|986|......"
  3. echo,%s:|=&echo,%
  4. pause
复制代码
  1. @echo off&setlocal enabledelayedexpansion
  2. set "s=69|8569|986|......"
  3. echo,!s:^|=^
  4. !&pause
复制代码

作者: wangdao6699    时间: 2015-4-5 18:17

回复 4# pcl_test


    代码简洁,感谢
作者: wangdao6699    时间: 2015-4-5 18:22

回复 6# cobat


    不能换行
作者: wangdao6699    时间: 2015-4-5 18:23

回复 3# pcl_test


    教程不错,学习了
作者: pcl_test    时间: 2015-4-5 18:45

问题得到解决后请在标题最前面注明[已解决]
http://www.bathome.net/thread-3473-1-1.html
作者: pcl_test    时间: 2015-4-5 18:47

本帖最后由 pcl_test 于 2015-4-5 19:25 编辑
  1. '&cls&@echo off&cscript -nologo -e:vbscript %~fs0 & pause & exit /b
  2. str="69|8569|986|456|678|6898"
  3. WScript.echo replace(str,"|",chr(10))
复制代码

作者: pcl_test    时间: 2015-4-5 18:49

powershell
  1. echo '69|8569|986|456|678|6898' | %{Write-Host $_.Replace("|","`n")}
复制代码

作者: bailong360    时间: 2015-4-5 18:55

本帖最后由 bailong360 于 2015-4-5 18:56 编辑

凑热闹
gawk
  1. @gawk -F "|" "for(i=1;i<=NF;i++) print $i>$New.txt" file.txt
复制代码
grep
  1. @grep -oP "\d+" file.txt>$New.txt
复制代码

作者: wangdao6699    时间: 2015-4-5 19:07

回复 12# pcl_test


    powershell 更简洁
作者: wangdao6699    时间: 2015-4-5 19:11

回复 13# bailong360

Linux系统 不会啊,只会微软系统
作者: bailong360    时间: 2015-4-5 19:15

回复 15# wangdao6699


    这些工具论坛里都有下载地址
http://bbs.bathome.net/viewthread.php?tid=3981
作者: wangdao6699    时间: 2015-4-5 19:16

回复 2# DAIC


    SED.exe 功能蛮强大的
作者: pcl_test    时间: 2015-4-5 19:20

本帖最后由 pcl_test 于 2015-4-5 19:21 编辑
  1. @if (0)==(0) echo off
  2. cscript -nologo -e:jscript %~s0
  3. pause & exit
  4. @end
  5. var str="69|8569|986|456|678|6898"
  6. WScript.Echo(str.replace(/\|/g,"\n"))
复制代码

作者: chromatin2    时间: 2015-4-5 20:21

回复 18# pcl_test


    这样,不能用bat产生的字串给这个,然后再返回到bat的变量吧?
作者: pcl_test    时间: 2015-4-5 20:26

回复 19# chromatin2

是的,除非外部调用
作者: wangdao6699    时间: 2015-4-6 07:23

回复 16# bailong360


    谢谢了
作者: 慕夜蓝化    时间: 2015-4-6 08:16

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "delims=" %%i in (新建文本文档.txt) do (
  4.     set "str=%%i"
  5.     for %%a in ("!str:|=" "!") do echo,%%~a
  6. )
  7. pause
复制代码

作者: wangdao6699    时间: 2015-4-6 10:02

回复 22# 慕夜蓝化


    运行有效,谢谢了




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2