[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文本处理] [已解决]批处理如何把文本一行变多行?

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

结果,以分隔符 |  标志

69
8569
986
。。。

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

评分人数

TOP

批处理for语句从入门到精通
http://www.bathome.net/thread-2189-1-1.html

TOP

  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
复制代码

TOP

本帖最后由 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
复制代码

TOP

本帖最后由 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
复制代码
1

评分人数

TOP

回复 4# pcl_test


    代码简洁,感谢

TOP

回复 6# cobat


    不能换行

TOP

回复 3# pcl_test


    教程不错,学习了

TOP

问题得到解决后请在标题最前面注明[已解决]
http://www.bathome.net/thread-3473-1-1.html

TOP

本帖最后由 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))
复制代码

TOP

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

TOP

本帖最后由 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
复制代码

TOP

回复 12# pcl_test


    powershell 更简洁

TOP

回复 13# bailong360

Linux系统 不会啊,只会微软系统

TOP

返回列表