Board logo

标题: [文本处理] [已解决]批处理如何将txt文本每一行的内容倒序/反转输出? [打印本页]

作者: wh1234567    时间: 2012-11-15 02:46     标题: [已解决]批处理如何将txt文本每一行的内容倒序/反转输出?

本帖最后由 pcl_test 于 2016-7-22 19:55 编辑

例如:原文本a内容:
批处理,是“我的最爱”

7878 2到底 23 。322版本


处理后输出文本b内容:
”爱最的我“是,理处批

本版223。 32 底到2 8787

行序不变,如果行与行之间有空行的话也不得删除,即保持原行序结构,只改变每行内容的前后顺序。
如何写代码?
作者: wh1234567    时间: 2012-11-15 15:02

顶起来,高手
作者: apang    时间: 2012-11-15 22:28

本帖最后由 apang 于 2012-11-15 22:30 编辑
  1. @echo off
  2. (for /f "tokens=1,2 delims=[]" %%a in ('find /v /n ""^<a.txt') do (
  3.   set "str1=%%b$"
  4.   set "str2=%%b$"
  5.   setlocal enabledelayedexpansion
  6.   for %%b in (2048 1024 512 256 128 64 32 16) do (
  7.     if "!str1:~%%b!" neq "" (
  8.       set /a n+=%%b&set "str1=!str1:~%%b!"
  9.     )
  10.   )
  11.   set "str1=!str1!fedcba9876543210"
  12.   set /a n+=0x!str1:~16,1!
  13.   for /l %%b in (0 1 !n!) do set "str=!str2:~%%b,1!!str!"
  14.   echo,!str:~1!
  15.   endlocal
  16. ))>b.txt
复制代码

作者: CrLf    时间: 2012-11-15 22:46

本帖最后由 CrLf 于 2012-11-15 23:03 编辑

方法来自网上,我也没看明白,求解答:
  1. sed "/\n/!G;s/\(.\)\(.*\n\)/&\2\1/;//D;s/.//" 1.txt>2.txt
复制代码

作者: wh1234567    时间: 2012-11-15 23:13

回复 4# CrLf

很感谢你的相助,但是效果见截图,另外,处理输出后会出现错误现象
作者: BAT-VBS    时间: 2012-11-23 15:11

回复 5# wh1234567


可能是你的sed版本问题,试试这个:
http://www.bathome.net/thread-16975-1-1.html
作者: Batcher    时间: 2012-11-23 15:17

回复 4# CrLf


看执行过程:
[tmp]$ ./sedsed -d --hide=hold '/\n/!G;s/\(.\)\(.*\n\)/&\2\1/;//D;s/.//' urfile
PATT:a$
COMM:/\n/ !G
PATT:a\n$
COMM:s/\(.\)\(.*\n\)/&\2\1/
PATT:a\n\na$
COMM:// D
PATT:\na$
COMM:/\n/ !G
PATT:\na$
COMM:s/\(.\)\(.*\n\)/&\2\1/
PATT:\na$
COMM:// D
PATT:\na$
COMM:s/.//
PATT:a$
a
PATT:b$
COMM:/\n/ !G
PATT:b\n$
COMM:s/\(.\)\(.*\n\)/&\2\1/
PATT:b\n\nb$
COMM:// D
PATT:\nb$
COMM:/\n/ !G
PATT:\nb$
COMM:s/\(.\)\(.*\n\)/&\2\1/
PATT:\nb$
COMM:// D
PATT:\nb$
COMM:s/.//
PATT:b$
b
PATT:c$
COMM:/\n/ !G
PATT:c\n$
COMM:s/\(.\)\(.*\n\)/&\2\1/
PATT:c\n\nc$
COMM:// D
PATT:\nc$
COMM:/\n/ !G
PATT:\nc$
COMM:s/\(.\)\(.*\n\)/&\2\1/
PATT:\nc$
COMM:// D
PATT:\nc$
COMM:s/.//
PATT:c$
c
PATT:d$
COMM:/\n/ !G
PATT:d\n$
COMM:s/\(.\)\(.*\n\)/&\2\1/
PATT:d\n\nd$
COMM:// D
PATT:\nd$
COMM:/\n/ !G
PATT:\nd$
COMM:s/\(.\)\(.*\n\)/&\2\1/
PATT:\nd$
COMM:// D
PATT:\nd$
COMM:s/.//
PATT:d$
d
作者: CrLf    时间: 2012-11-23 15:57

回复 7# Batcher


    昂!?这么牛逼的第三方是哪位?
作者: Batcher    时间: 2012-11-23 16:18

回复 8# CrLf


http://www.bathome.net/thread-15582-1-1.html
作者: pcl_test    时间: 2016-7-22 20:01

本帖最后由 pcl_test 于 2016-7-22 20:02 编辑
  1. //&cls&type "文本.txt"|cscript -nologo -e:jscript "%~f0"&pause&exit
  2. var s='';while(!WSH.StdIn.AtEndOfStream){s+=WSH.StdIn.ReadLine().split('').reverse().join('')+'\r\n';}
  3. WSH.Echo(s);
复制代码

作者: pcl_test    时间: 2016-12-17 18:47

本帖最后由 pcl_test 于 2016-12-17 19:00 编辑
  1. powershell -c "gc '文本.txt'|%%{$_[($_.length-1)..0] -join ''}"
复制代码
  1. powershell -c "gc '文本.txt'|%%{$a=$_.ToCharArray();[array]::Reverse($a);$a -join ''}"
复制代码





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